最近研究了一下如何用docker 打包django后台程序,记录一下踩到的坑,留给自己以后查看,如有错误欢迎各位大神指正。
这里记录一下最简单的,只是打包一个django后台,不涉及restful api 和数据库的连接。
用到的包:
django、docker、gunicorn、nginx
这里我们使用gunicorn来运行django的项目。
目录结构:
.
├── README.md
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ └── sites-enabled
│ └── django_project
└── web
├── Dockerfile
├── backend
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
├── requirements.txt
├── static
├── index.html
└── main.css
docker-compose.yml
web:
restart: always
build: ./web
expose:
- "8000" # 暴露出8000端口,可以按照自己的需要修改
volumes:
- /usr/src/app
- /usr/src/app/static
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/gunicorn backend.wsgi:application -w 2 -b :8000 # 运行django
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web # 这里设置可以访问到web容器的内容
./nginx/Dockerfile
nginx 的配置文件在这里不展开了。
FROM tutum/nginx
RUN rm /etc/nginx/sites-enabled/default
ADD sites-enabled/ /etc/nginx/sites-enabled
./web/Dockerfile
这里我们利用Python3.5来构建项目。如果其他版本可以修改此文件
FROM python:3.5-onbuild
后面关于django的其他文件在这里我不做过多的描述了。
运行方式
docker-compose build
docker-compose up -d