docker-compose自动化部署django项目


Dockerfile是为了自定义构建镜像

docker-compose.yml 可同时运行多个镜像,并且指定镜像间的相互依赖关系

安装Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装docker-compse

pip3 install docker-compose

删除容器

docker-compose rm -f
docker rmi image-id
create database django default charset=utf8;

构建一个Django的Dockerfile

FROM python:3.6
RUN apt-get install -y nginx
RUN pip3 install uwsgi
RUN pip install -r /config/requirement.txt
WORKDIR /src

构建一个web+mysql的docker-compose文件

version: '2'  
services:
  web:
    environment:
      - DJANGO_SETTINGS_MODULE=django.settings_docker
    restart: always
    build: .
    container_name: aqqzw_web
    command: bash -c "cd /root/django/ && python manage.py makemigrations && python manage.py migrate && uwsgi --ini ./docker/uwsgi.ini && /etc/init.d/nginx start && tail -f /var/log/nginx/error.log"
    depends_on:
      - db
    volumes:
      - /usr/local/django/:/root/django/
      - /usr/local/django.conf:/etc/nginx/conf.d/django.conf
    ports:
      - "8000:80"
    stdin_open: true
    tty: true

  db:
    image: mariadb:10.2
    container_name: mariadb
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
    volumes:
      - ../my.cnf:/etc/mysql/my.cnf
      - /data/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_USER=root
      - MYSQL_DATABASE=django

运行docker-compse

docker-compose up