项目结构
web1
Dockerfile
uwsgi.ini
manage.py
web1app
web2
Dockerfile
uwsgi.ini
manage.py
web2app
mysql
Dockerfile
all.sql
nginxconf
web1.conf
web2.conf
docker-compose.yml
docker-compose.yml
version: '3'
services:
db: #对应django 数据库连接中的 HOST
build: ./mysql #指定mysql的Dockerfile 文件相对位置
expose: #对外暴漏的端口
- "3333"
restart: always #服务宕机之后进行重启
command: --default-authentication-plugin=mysql_native_password #安装之后执行的命令
environment:
- MYSQL_ROOT_PASSWORD=123456 #数据库 root 用户的密码 对应django 数据库连接中的 PASSWORD
- MYSQL_DATABASE=test #数据库 名字 对应django 数据库连接中的 NAME
web1:
build: ./web1name #web1 的Dockerfile文件的相对位置
command: uwsgi --ini /code/web1name/uwsgi.ini
working_dir: /code/web1name #容器中项目的文件路径
volumes:
- ./web1name:/code/web1name #宿主机项目文件 挂在 到容器的项目文件, 方便对项目代码的管理与维护
expose:
- "1111"
depends_on: #指定依赖 数据库启动后 服务才启动
- db
web2:
build: ./web2name
command: uwsgi --ini /code/web2name/uwsgi.ini
working_dir: /code/web2name
volumes:
- ./web2name:/code/web2name
expose:
- "2222"
depends_on:
- db
nginx:
image: nginx:alpine
volumes:
- ./nginxconf:/etc/nginx/conf.d
ports:
- "80:80"
depends_on:
- web1
- web2
web2-Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED=1
RUN mkdir /code
WORKDIR /code
RUN mkdir tmp
RUN mkdir logs
RUN mkdir web2name
COPY requirements.txt /code/web2name #COPY 如果是文件夹 需要 src /code/src(写到文件夹那层目录)
RUN pip install -r /code/web2name/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
mysql-Docker
FROM mysql:5.7
ADD ./all.sql /docker-entrypoint-initdb.d #宿主机上的sql 添加到容器的目录下 mysql安装后执行 all.sql