基于python3.6-slim+supervisor 的dockerfile docker-compose

# 基础镜像
FROM python:3.6-slim
LABEL author="xiaoqiao99"
# 替换源
RUN sed -i s/deb.debian.org/mirrors.aliyun.com/g /etc/apt/sources.list
RUN sed -i s/security.debian.org/mirrors.aliyun.com/g /etc/apt/sources.list
RUN apt-get update

#mysql-client 依赖
RUN apt-get install -y default-libmysqlclient-dev gcc

# 远程(开发使用)
RUN apt-get install -y openssh-server openssh-client && \
    echo root:123456 | chpasswd && \
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

RUN apt-get clean

#定义时区参数
ENV TZ=Asia/Shanghai
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
#print()时在控制台正常显示中文
ENV PYTHONIOENCODING=utf-8

RUN mkdir -p ~/.pip && mkdir -p /etc/supervisor && mkdir -p /opt/project/logs && mkdir -p /run/sshd
# pip源
RUN echo "[global]" >> ~/.pip/pip.conf
RUN echo "trusted-host=mirrors.aliyun.com" >> ~/.pip/pip.conf
RUN echo "index-url=http://mirrors.aliyun.com/pypi/simple/" >> ~/.pip/pip.conf

# supervisor_conf 进程管理
RUN pip install supervisor
RUN /usr/local/bin/echo_supervisord_conf > /etc/supervisor/supervisord.conf
RUN echo "[include]">>/etc/supervisor/supervisord.conf
RUN echo "files = /etc/supervisor/*.ini">>/etc/supervisor/supervisord.conf
# 拷贝项目进程文件
COPY deploy/supervisor_conf /etc/supervisor

WORKDIR /opt/project
#项目依赖
COPY requirements.txt /opt/project
RUN pip install -r requirements.txt

# 启动
#EXPOSE 8000 22
#CMD ["supervisord","-n","-c","/etc/supervisor/supervisord.conf"]

sshd.ini 内容如下:

[program:sshd]
# 执行用户
;user = root
# 执行的命令
command = /usr/sbin/sshd -D
# 日志文件配置
;loglevel = info
;stdout_logfile = /opt/project/logs/ssh.log
;stderr_logfile = /opt/project/logs/ssh_error.log
;stdout_logfile_maxbytes = 100MB
;stdout_logfile_backups = 3
# 给每个进程命名,便于管理
;process_name = ssh_worker%(process_num)s
# 启动的进程数,设置成云服务器的vCPU数
numprocs_start = 1
numprocs = 1
# 设置自启和重启
autostart = true
autorestart = true
;redirect_stderr = True

docker-compose.yml

version: "3"
services:
  app:
    restart: always
    build: .
    command: bash -c "supervisord -n -c /etc/supervisor/supervisord.conf"
    container_name: dj_app
    volumes:
      - .:/opt/project/dj_server
    ports:
      - "9022:22"
      - "9001:8000"
    depends_on:
      - db
      - redis
    networks:
      - db_network

  db:
    image: mysql:5.7
    container_name: dj_mysql
    volumes:
      - "./mysql:/var/lib/mysql"
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=dj_server
    command:  [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci'
    ]
    networks:
      - db_network

  redis:
    image: redis:alpine
    container_name: dj_redis
    ports:
      - "6379:6379"
    restart: always
    networks:
      - db_network

networks:
  db_network:
    driver: bridge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值