1)准备Python项目
1.下载Web项目:接口自动化测试平台
2.在D盘的根目录,新建一个文件夹docker-python,把下载的项目压缩包解压到该文件夹
3.用记事本打开Django项目中的settings.py文件
修改四处内容:
DEBUG=Flase # 调试模式关闭
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '192.168.xxx.xxx'] # 访问地址
'PASSWORD': 'test123456' # 密码不能有$
'HOST': 'auto_test_platform_mysql' # 主机名
'PORT': '3306' # 端口号
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 增加静态文件路径
2)安装mysql容器
1.在项目的根目录中,创建一个docker-compose文件
services:
auto_test_platform_mysql:
image: daocloud.io/library/mysql:5.7.6
restart: always
container_name: auto_test_platform_mysql
volumes:
- ./mysql/data:/var/lib/mysql
- ./default.cnf:/etc/mysql/conf.d/default.cnf
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
MYSQL_DATABASE: auto_test_plt
MYSQL_USER: auto_test_plt
MYSQL_PASSWORD: test123456
networks:
- net1
2.在项目同级目录下,创建一个default.cnf文件
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
3)安装gunicorn容器
1.创建一个requirements.txt文件,编辑项目中要用到的所有代码库
Django==3.1.4
mysqlclient==2.0.1
gunicorn
2.创建一个Dockerfile,下载代码库,并启动项目
FROM python:3.8
COPY ./requirements.txt /app/
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt
ENTRYPOINT cd /app/auto_test_platform; python manage.py collectstatic -c --no-input; python manage.py migrate; gunicorn -b 0.0.0.0:8000 auto_test_platform.wsgi;
3.编辑docker-compose.yml文件,制定gunicorn容器
auto_test_platform_gunicorn:
build:
context: ./
dockerfile: Dockerfile
restart: always
environment:
TZ: Asia/Shanghai
image: auto_test_platform:1.0
container_name: auto_test_platform_gunicorn
working_dir: /app/auto_test_platform
volumes:
- ./auto_test_platform:/app/auto_test_platform
ports:
- 8000:8000
depends_on:
- auto_test_platform_mysql
networks:
- net1
4)安装nginx容器
1.先创建nginx的config文件
auto-test-platform-nginx.conf
server {
listen 80;
server_name auto_test_platform;
location /static/ {
autoindex on;
alias /static/;
}
location / {
proxy_pass http://auto_test_platform_gunicorn:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置文件参数说明:
listen是所需要监听的端口
server_name是需要绑定的域名,暂时没有域名时,请使用ip
access_log是确定正常状态下log文件位置
error_log使确定发生错误时log文件位置
location / 是当访问到根下的时候,将所有请求转发到127.0.0.1:8000,本文使转发到gunicorn启动的django应用上,中间配置的是需要转发的内容
location /static/ 配置了静态文件所在的路径,静态文件由nginx处理,动态转发到django,如不配置会出现站点引用的所有js css都找不到
2.编辑docker-compose.yml文件
auto_test_platform_nginx:
image: nginx:latest
container_name: auto_test_platform_nginx
restart: always
volumes:
- ./auto_test_platform/static:/static
- ./auto-test-platform-nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- 8088:80
environment:
TZ: Asia/Shanghai
depends_on:
- auto_test_platform_gunicorn
networks:
- net1
5.自定义一个docker网络,把三个容器通过桥接的方式,放在一个网络中,使他们可以用容器名互相访问,编辑docker-compose.yml
networks:
net1:
driver: bridge
6.把编辑好的docker-compose.yml文件移动到上一级目录
最终目录结构:
- docker-python
- auto_test_platform
- auto-test-platform-nginx.conf
- default.cnf
- docker-compose.yml
- Dockerfile
- requirements.txt
7.把整个文件夹docker-python上传到linux服务器,并在服务器的docker-python目录下执行命令
docker-compose up -d

如果启动过程中遇到错误,关闭并删除容器
docker-compose down

8.这时就可以访问部署好的python网站了
http://<linux服务器ip地址>:8000/admin/ 这个地址能访问,说明gunicorn容器正常
http://<linux服务器ip地址>:8088/admin/ 这个地址能访问,说明nginx容器正常
9.进入gunicorn容器,设置管理员账号
docker exec -it 容器标识 bash
在项目路径下执行命令
python manager.py createsuperuser
输入用户名密码邮箱
注:1、安装时因为Dockerfile文件配置错误,命令没有执行,遇到如下报错,进入gunicorn容器后请手动执行命令:
python manage.py collectstatic -c --no-input
python manage.py migrate

2、如果点击自定义项目报500,因为没有生成对应的表,进入gunicorn容器后手动执行命令映射mysql表:
python manage.py makemigrations
python manage.py migrate
10.返回网站,进行登录

本文详细介绍了如何使用Docker-Compose部署Python Django项目。首先,准备Python项目并修改settings.py文件,接着安装mysql容器,创建docker-compose文件和default.cnf。然后,安装gunicorn容器,编写Dockerfile和requirements.txt。再安装nginx容器,配置nginx.config文件并更新docker-compose.yml。最后,自定义网络,将所有容器置于同一网络中,并在Linux服务器上部署,设置管理员账号以完成部署。
4412

被折叠的 条评论
为什么被折叠?



