1、准备一个Python项目

基于Python语言的一个接口自动化测试平台,是一个Web项目

1. 从Gitee上下载项目

2、在本机的D盘根目录新建一个文件夹docker-python,并把下载的项目解压到该文件夹下

3. 用PyCharm打开:auto_test_platform\auto_test_platform\settings.py

4. 修改文件内容: 比如数据库的账号密码之类的,还有其他的一些信息

docker部署flowable docker部署python项目_docker

2、安装一个Mysql容器

方式:使用docker-compose方式安装

1、在项目根目录中,创建一个docker-compose.yml文件

services:

   auto_test_platform_mysql:

     restart: always 

     image: daocloud.io/library/mysql:5.7.6 

    container_name: auto_test_platform_mysql
ports:

       - 3306:3306

    environment:

      MYSQL_ROOT_PASSWORD: 123456

     TZ: Asia/Shanghai

     MYSQL_DATABASE: auto_test_plt

     MYSQL_USER: auto_test_plt

     MYSQL_PASSWORD: XXX

   volumes:

      - ./mysql/data:/var/lib/mysql

     - ./default.cnf:/etc/mysql/conf.d/default.cnf

   networks:(# 将tomcat、mysql等容器放在同一个局域网里,方便互相访问    一个容器里面可以加很多个网络)

      - net1
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 (# gunicorn容器依赖于mysql容器,mysql容器先启动后gunicorn容器才启动)

     networks:

        - net1
auto_test_platform_nginx:

     image: nginx:latest
container_name: auto_test_platform_nginx

     volumes:

        - ./auto_test_platform/static:/static

        - ./auto-test-platform-nginx.conf:/etc/nginx/conf.d/default.conf

     ports:

        - 8088:80

     depends_on:

        - auto_test_platform_gunicorn (# nginx容器依赖于gunicorn容器,gunicorn容器先启动后nginx容器才启动)

     networks:

        - net1


networks:

  net1:

    driver: bridge

2、在文件夹docker-python与项目同级的目录下,创建数据库配置文件default.cnf(为mysql设置字符编码集)

[mysqld]

character-set-server = uft8mb4

collation-server = utf8mb4_general_ci

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

3、安装Gunicorn容器(类似于Java中的Tomcat)

gunicore容器用来部署python项目:下载一个python的标准容器,然后在python容器里面部署代码,以及安装项目中各个代码库的依赖

1、在文件夹docker-python与项目同级的目录下,创建requirements.txt文本(项目中需要用到的所有代码库)

Django==3.1.4

mysqlclient==2.0.1  (# 代码库,来操作数据库的)

gunicorn(#:执行Django程序的,默认下载最新的版本号)

2、在文件夹docker-python与项目同级的目录下,创建dockerfile文本,来下载依赖的代码库,并启动项目

FROM python:3.8

COPY ./requirements.txt  /app/

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

ENTRYPOINT cd /app/auto_test_platform; python manage.py collectstatics -c --no-input; python manage.py migrate; gunicorn -b 0.0.0.0:8000 auto_test_platform.wsgi;

3、再次编辑docker-compose.yml文件,指定gunicorn容器(该容器用来放置开发的代码)

4、安装Nginx容器来管理静态资源

1、在文件夹docker-python与项目同级的目录下,创建nginx的配置文件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;


   }

}

2、再次编辑docker-compose.yml文件,指定nginx容器

5、设置一个自定义的docker网络

把3个容器通过桥接的方式,放在一个网络中,方便三个容器可以使用容器名称互相访问

1、再次编辑docker-compose.yml文件,指定网络

6、最终的项目目录

将根目录下的docker-compose.yml文件剪切到与其它配置文件同级的目录下:

docker部署flowable docker部署python项目_ico_02

 

 7、清空docker服务器上的容器

先检查当前Docker服务器上所有容器,然后停止所有容器,并删除所有容器,是为了防止端口重复,最后检查当前容器

docker-compose down

8、上传所有配置文件至docker服务器

将docker-python整个文件夹上传到linux服务器的/root/docker-python文件夹下

docker部署flowable docker部署python项目_ico_03

 9、运行docker-compose

docker-compose up -d

docker部署flowable docker部署python项目_mysql_04

 10、本地访问网站

1、http://<docker服务器IP>:8000/admin  (可以正常访问,说明gunicorn部分是正常的)

docker部署flowable docker部署python项目_docker部署flowable_05

2、http://<docker服务器IP>:8088/admin (可以正常访问的话,说明nginx部分是正常的,有静态样式的、有css、有图片等的)

docker部署flowable docker部署python项目_mysql_06

11、进入gunicorn容器,设置初始的后台管理系统超级管理员

docker exec -it 容器标识 bash
在项目路径下执行命令:  python manage.py createsuperuser

输入用户名密码等等一系列

docker部署flowable docker部署python项目_mysql_07

 12、登录网站,成功

使用上面设置的超级管理员账户密码登录

docker部署flowable docker部署python项目_docker部署flowable_08