docker 后端部署架构
django-docker ## 项目根路径
│ .gitignore # git忽略不上传的文件
│ docker-compose.yml # docker-compose文件
│ Dockerfile # 部署django项目的dockerfile
│ README.md # 项目Readme说明
│ requirements.txt # 项目必须要安装的文件
│
├─nginx ## nginx容器配置文件
│ │ nginx.conf # /etc/nginx/nginx.conf配置文件
│ │
│ └─conf # /etc/nginx/conf.d配置nginx文件夹
│ default.conf
│
└─web ## 部署django项目的web容器
│ manage.py
│ uwsgi.ini # django项目的uwsgi配置文件
│
├─demoapp
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tasks.py # 配置celery任务文件
│ │ tests.py
│ │ urls.py
│ │ views.py
│ │ __init__.py
│ │
│ ├─migrations
│ │ __init__.py # 引入celery
│ │
│ └─templates
│ └─demoapp
│ celery_detail.html # 查看具体celery执行结果页面
│ celery_index.html # 查看对应celery任务页面
│ index.html # 项目主页面
│
└─web
celery.py # celery配置文件
settings.py
urls.py
wsgi.py
__init__.py
doclerfile
FROM python:3
ENV PYTHONUNBUFFERED=1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# ADD . /code/
django-docker\Dockerfile
docker-compose
version: '3'
services:
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
expose:
- "3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=djangodocker
- MYSQL_USER=django
- MYSQL_PASSWORD=django
nginx:
image: nginx:alpine
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf:/etc/nginx/conf.d
- ./web/staticfiles:/django_static
ports:
- "80:80"
depends_on:
- web
redis:
image: redis:alpine
expose:
- "6379"
restart: always
web:
build: .
# command: python manage.py runserver 0:8000
# ports:
# - "8000:8000"
command: uwsgi --ini uwsgi.ini
working_dir: /code/web
volumes:
- .:/code
expose:
- "8000"
depends_on:
- mysql
- redis
celery:
build: .
command: celery -A web worker -l info
working_dir: /code/web
volumes:
- .:/code
depends_on:
- mysql
- redis
docker-compose.yml
docker-compose 详解:
version: '3' # cocker compose版本号
services: # 顶级配置文件
mysql: # 服务名: 容器建通信、管理容器
image: mysql:5.7 # 引入官方mysql镜像
volumes:
- ./mysql:/var/lib/mysql # 把当前文件夹下的 ./mysql文件夹挂载到docker容器 /var/lib/mysql 路径下
expose:
- "3306" # 将当前容器的端口3306端口暴露给link到本容器的容器
restart: always # 宿主机重启自动拉起这个docker容器
environment:
- MYSQL_ROOT_PASSWORD=root # mysql服务器root密码root
- MYSQL_DATABASE=djangodocker # 创建数据库 djangodocker
- MYSQL_USER=django # 创建一个用户 django
- MYSQL_PASSWORD=django # 用户密码为django
nginx:
image: nginx:alpine
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf:/etc/nginx/conf.d
- ./web/staticfiles:/django_static
ports:
- "80:80" # 绑定容器的80端口到主机的80端口
depends_on:
- web # 必须先启动web容器然才能启动nginx容器
redis:
image: redis:alpine
expose:
- "6379"
restart: always
web:
build: .
# command: python manage.py runserver 0:8000
# ports:
# - "8000:8000"
command: uwsgi --ini uwsgi.ini # 启动uwsgi命令
working_dir: /code/web # 项目工作路径
volumes:
- .:/code # 将当前文件夹下所有文件挂载到容器的 /code 文件夹
expose:
- "8000"
depends_on: # 必须mysql和reids容器启动后才能启动web容器
- mysql
- redis
celery:
build: .
command: celery -A web worker -l info
working_dir: /code/web
volumes:
- .:/code
depends_on:
- mysql
- redis
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:网站seo优化选择云虚拟主机好还是云主机好 下一篇:c++智能指针有什么作用