docker-compose+django+nginx 服务器部署
使用docker-compose搭建容器项目,并完成服务器部署,建议提前了解一些docker相关的知识.如果之前没有了解过,可以参考一下: https://www.runoob.com/docker/docker-tutorial.html
一 项目环境准备
参考上面网址的教程搭建好docker和docker-compose环境,新建空文件夹,构建项目目录,
二 编写文件
docker-compose.yml文件:
version: '3'
services:
web:
build: .
restart: always
privileged: true
command: bash -c "uwsgi --ini /code/conf/uwsgi.ini && tail -f /dev/null"
tty: true
volumes:
- .:/code
- static-volume:/code/web_server/web/static
expose:
- "8000"
networks:
- web_network
nginx:
image: nginx:1.19.0-alpine
restart: always
depends_on:
- web
links:
- "web:web"
privileged: true
ports:
- "80:8000"
volumes:
- static-volume:/code/web_server/web/static
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/log:/var/log/nginx
networks:
- web_network
networks:
web_network:
driver: bridge
volumes:
static-volume:
配置解释说明:
networks: docker允许用户给容器定义工作网络,相同网络中的容器能够正常通信.
volumes数据卷: static-volume:/code/web_server/web/static,冒号后面是容器中对应文件的位置,前面的static-volume仅仅是个数据卷名字,并非宿主机目录
Dockerfile文件
FROM python
WORKDIR /code
ADD ./web_server/web/requirements.txt /code
WORKDIR /code
RUN pip install --upgrade pip
RUN pip install -r requirements.txt(这里建议换成国内源安装)
uwsgi.ini文件
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir =/code/web_server/web
module =web.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe)
uwsgi-socket = 0.0.0.0:8000
chmod-socket = 666
# clear environment on exit
vacuum = true
daemonize = /code/run.log
enable-threads = true
wsgi-disable-file-wrapper =true
pidfile = /code/uwsgi.pid
nginx配置文件
upstream web{
ip_hash;
server web:8000;
}
server {
listen 8000;
server_name www.test.com;#你自己的域名或者localhost
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /static {
# autoindex on;
alias /code/web_server/web/static;
}
location / {
uwsgi_pass web;
include uwsgi_params;
}
}
这里的nginx配置监听端口要配置成8000,因为之前我们的nginx项目是8000端口,nginx容器对外暴露的是80端口,确保宿主机的80端口没有被占用
(ps:django项目的settings.py中allowed_hosts记得配置成allowed_hosts=["*"]
三 执行命令
在项目根目录依次执行docker-compose build ,docker-compose up -d 命令,若一切正常,则可以在浏览器通过域名或者ip地址访问我们的项目了