Docker部署mysql+nginx+django+backup

在docker上部署Django,添加簡單的負載均衡,利用Mysql數據庫,爲數據庫配置備份。

linux腳本,用於上線:sh online.sh

git clone .......
cd ..
docker-compose build
docker-compose up -d

部署文件docker-compose.yml

version: '3'

services:
  web_mysql:
    build: ./conf/mysql
    container_name: web_mysql
    command: --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_ROOT_HOST=%
      - MYSQL_HOST=localhost
    ports:
      - "3302:3306"
    volumes:
      - /test/test/conf/mysql/logs:/home/log
    networks:
      # 指定網橋
      ipv4_address: 172.16.238.10
    restart: always

  web1:
    build: ""
    container_name: web1
    command: python manage.py runserver 0.0.0.0:6001
    depends_on:
      - web_mysql
    ports:
      - "6001:6001"
    volumes:
      - .:/test
    networks:
      - webnet

  web2:
    build: ""
    container_name: web2
    command: python manage.py runserver 0.0.0.0:6002
    depends_on:
      - web_mysql
    ports:
      - "6002:6002"
    volumes:
      - .:/test
    networks:
      - webnet

  web3:
    build: ""
    container_name: web3
    command: python manage.py runserver 0.0.0.0:6003
    depends_on:
      - web_mysql
    ports:
      - "6003:6003"
    volumes:
      - .:/test
    networks:
      - webnet

  nginx:
    build: ./conf/nginx
    volumes:
      - /test/the_van/conf/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /test/the_van/conf/nginx/logs:/var/log/nginx
      - /test/the_van/the_van/static:/data/static
    ports:
      - "8000:8000"
    networks:
      - webnet

  backup:
     # mysql docker備份鏡像
    image: databack/mysql-backup
    restart: always
    volumes:
      - /test/the_van/conf/mysql_db/backup:/db
      - /test/the_van/conf/mysql_db/pre:/post.d/pre-backup
      - /test/the_van/conf/mysql_db/post:/post.d/post-backup
    depends_on:
      - web_mysql
    environment:
      - DB_DUMP_TARGET=/db
      - DB_USER=root
      - DB_PASS=123456
      # 每天晚上十一點備份數據庫
      - DB_DUMP_CRON=1 0 * * *
      # 生成詳細日誌
      - DB_DUMP_DEBUG=true
      # 不保留目標文件的權限
      - DB_DUMP_KEEP_PERMISSIONS=false
      - DB_SERVER=web_mysql
    networks:
      - webnet

  adminer:
    # PHP寫的mysql客戶端
    # 瀏覽器直接本地打開
    image: adminer
    restart: always
    ports:
      - 8080:8080
    networks:
      - webnet

networks:
  webnet:
    ipam:
      driver: bridge
      config:
        - subnet: "172.16.238.0/24"
        - subnet: "2001:3984:3989::/64"

Dockerfile(主)

FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /test
WORKDIR /test
# 安裝依賴包
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY /test /test
# 更改docker時區
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

nginx Dockerfile

FROM nginx

RUN mkdir /data
WORKDIR /data
COPY uwsgi.ini uwsgi.ini
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

nginx核心配置文件

# 負載均衡
upstream test {
		server 192.17.215.183:6001;
		server 192.17.215.183:6002;
		server 192.17.215.183:6003;
	}
server {
            listen 8000;
            server_name test;
            charset utf-8;
    location / {
            root html;
            proxy_pass http://test;
            include uwsgi_params;
            uwsgi_connect_timeout 30;
        }
    location /static {
            alias /data/static;
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章