Loading...

docker、dockercompose部署django2.2应用(nginx/mysql/gunicorn)

概览

部署的是django2.2官方文档的polls示例应用,首先看看目录结构
比较重要的有

  • mysql my.cnf 配置文件
  • nginx
    • nginx.conf 配置文件
    • Dockfile nginx的image构建文件
  • .env 设置环境变量
  • docker-compose.yml docker-compose的配置文件
  • Dockerfile python的image构建文件

部署一共使用了三个image(nginx/mysql/python),会有三个容器,这就要使用docker-compose定义和运行多容器的应用
docker、dockercompose部署django2.2应用(nginx/mysql/gunicorn)

编写Dockerfile

构建Python的image

### /django22/Dockerfile ###

FROM python:3.6.8
MAINTAINER Huu "[email protected]"
COPY . /usr/srv/polls
WORKDIR /usr/srv/polls
RUN pip install -r requirement.txt -i  https://mirrors.aliyun.com/pypi/simple/
EXPOSE 7000 
ENTRYPOINT  ["bash","./dj-start.sh"] 

容器成功运行后的启动命令,在Dockerfile的ENTRYPOINT中设置,这里是django部署前的准备,最后用gunicorn -c 启动,配置文件gunicorn.conf需要编写

### /django22/dj-start.sh ### 

#! /bin/bash
python manage.py collectstatic --noinput && python manage.py migrate && 
exec gunicorn django22.wsgi:application -c gunicorn.conf

构建Nginx的image

主要就是把nginx.conf这个配置文件放入容器中,并且创建了静态文件的存放目录与nginx.conf中对应,后续用于挂载宿主机的目录

FROM nginx:1.12.2
EXPOSE 80  
MAINTAINER Huu "[email protected]"
COPY ./nginx/nginx.conf /etc/nginx/conf.d   
RUN mkdir -p /usr/share/nginx/html/static && mkdir -p /usr/share/nginx/html/media

docker-compose.yml整合多个image

比较完整的示例,都挂载了日志文件

version: '3'
networks:
  net1:
    driver: bridge
  net2:
    driver: bridge
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: polls
      MYSQL_ROOT_PASSWORD: password
      TZ: Asia/Shanghai
    command:
      - bash
      - '-ec'
      - |
          mkdir -p /var/log/mysql
          chown -R mysql:mysql /var/log/mysql
          exec docker-entrypoint.sh mysqld
    volumes:
      - ./db:/var/lib/mysql
      - ./mysql:/etc/mysql/conf.d
      - ./logs/mysql:/var/log/mysql
    restart: always
    networks:
      - net1

  web:
    build:
      .
#    容器内不使用nginx的话可以直接映射端口给宿主机的nginx
#    ports:
#      - "7000:7000"
    env_file:
      - .env
    volumes:
      - .:/usr/srv/polls
      - ./logs/gunicorn:/var/log/gunicorn
    depends_on:
      - db
    networks:
      - net1
      - net2
    restart: always


  nginx:
    build:
        context: ./
        dockerfile: ./nginx/Dockerfile
    environment:
      TZ: Asia/Shanghai
    ports:
      - "81:80"
    volumes:
      - ./static:/usr/share/nginx/html/static
      - ./media:/usr/share/nginx/html/media
      - ./logs/nginx:/var/log/nginx
    depends_on:
      - web
    networks:
      - net2
    restart: always

构建并运行

docker-compose build  构建image
docker-compose up -d 后台运行容器

本文来源 爱码网,其版权均为 原网址 所有 与本站无关,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源。

© 版权声明

相关文章