以下内容为原创,转载请注明出处!

上一篇文章我们记录了怎么打包django项目,这次我们开始打包下面三个服务(再多个也不怕了),主要用到docker-compose:


  1. organization:用户服务(flask),镜像:organization:latest,镜像不会打包的可以看:https://www.520pf.cn/article/177.html

  2. apply_api:后台api服务,依赖用户服务(django),镜像:apply-api-server:v2.0,镜像不会打包的可以看:https://www.520pf.cn/article/177.html

  3. apply_vue:前端vue服务,依赖用户和api服务(Vue),镜像:apply-vue-server:v2.0,镜像不会打包的可以看:https://www.520pf.cn/article/179.html


organization、apply_api都用uwsgi启动,apply_vue用nginx启动,好了,废话不多说,看下面:


  • 编辑docker-compose.yml,vim docker-compose.yml:

version: '3'

services:
  organization:
    image: 'organization:latest'
    # 执行命令,在容器中
    command: uwsgi -i /organization/uwsgi.ini
    # 开放端口
    ports:
      - 8007:8007

  apply-api-server:
    image: 'apply-api-server:v2.0'
    command: uwsgi --http 0.0.0.0:9003 --file /apply_api/apply_api/wsgi.py
    # 和哪些服务通信
    links:
      - organization
    ports:
      - 9003:9003


  apply-vue-server:
    image: 'apply-vue-server:v2.0'
    links:
      - organization
      - apply-api-server
    ports:
      - 8080:8080
  • 编辑uwsgi.ini文件,该文件是放在organization项目下:

[uwsgi]

# uwsgi 启动时所使用的地址与端口
http = 0.0.0.0:8007

# buffer 大小
buffer-size=32768

# 指向网站目录
chdir = /organization/

# python 启动程序文件
wsgi-file = manage.py

# python 程序内用以启动的 application 变量名
callable = app

# 处理器数
processes = 4

# 线程数
threads = 2
  • 修改代码中的通信地址,容器间通信指定服务名,比如apply_api里面的:

organization_url = "https://520pf.cn:8007/api/v1/" 改为 "https://organization:8007/api/v1/"
  • 启动和关闭:

docker-compose up -d
docker-compose down
  • 查看状态

docker ps 出现以下状况说明启动成功,可以直接访问了(为了排版就把不重要的用...代替了)

duankekedeMacBook-Pro:~ duankeke$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  ...      STATUS              PORTS                           
1ac7e3958cd5        apply-vue-server:v2.0   "nginx -g 'daemon of…"   ...      Up 10 minutes       80/tcp, 0.0.0.0:8080->8080/tcp   
96b0cd6c9e87        apply-api-server:v2.0   "uwsgi --http 0.0.0.…"   ...      Up 10 minutes       0.0.0.0:9003->9003/tcp          
b06d118baf12        organization:latest     "uwsgi -i /organizat…"   ...      Up 10 minutes       0.0.0.0:8007->8007/tcp          
duankekedeMacBook-Pro:~ duankeke$