Dockerfile构建python 运行项目运行环境

该博客详细介绍了如何构建Docker镜像,包括使用Dockerfile、配置环境文件如pip.conf和sources.list,以及处理openssl.cnf和localtime。通过编写install.sh和startup.sh脚本来自动化安装依赖和启动服务。最后,通过docker build命令创建镜像。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/qq_24487005/article/details/123380810

目录

构建思路

DockerFile脚本

环境文件解析

pip.conf

sources.list

openssl.cnf

localtime

install.sh

startup.sh

docker镜像构建


构建思路

1、把容器内需要用到的文件全部复制到容器中

2、设置一个工作目录,把项目代码共享到工作目录中运行

3、把需要执行的shell命令写在一个.sh文件中,统一执行。因为Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大;RUN 是在 docker build执行脚本

4、配置容器启动自动执行脚本,CMD 在docker run 时运行运行脚本

DockerFile脚本
# 基于镜像基础
FROM python:3.9.5
 
# 复制文件到容器中
ADD ./docker/pip.conf /root/.pip/pip.conf
ADD ./docker/sources.list /etc/apt/sources.list
ADD ./docker/openssl.cnf /etc/ssl/openssl.cnf
ADD ./docker/localtime /etc/localtime
ADD ./docker/requirements.txt /var/requirements.txt
ADD ./docker/startup.sh /var/startup.sh
ADD ./docker/install.sh /var/install.sh
 
# 工作目录 /var/app
WORKDIR /var/app
 
RUN /var/install.sh
 
CMD /var/startup.sh

环境文件解析
pip.conf
配置pip国内源,容器内文件路径:/root/.pip/pip.conf

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
sources.list

配置容器环境包下载的国内源,容器内文件路径:/etc/apt/sources.list

deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
 
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
openssl.cnf

处理ssl.SSLError: [SSL: DH_KEY_TOO_SMALL] dh key too small问题

容器内文件路径:/etc/ssl/openssl.cnf

修改文件参数即可

[system_default_sect]
MinProtocol = TLSv1.2
#CipherString = DEFAULT@SECLEVEL=2
CipherString = DEFAULT@SECLEVEL=1
localtime

同步系统时间到容器内,容器内文件路径:/etc/localtime

install.sh
构建容器时需要执行的shell命令

#!/bin/bash
set -e
apt update
apt install -y cron libsasl2-dev python-dev libldap2-dev libssl-dev nodejs
pip install --upgrade pip
pip install -r /var/requirements.txt
chmod -R 777 /var/startup.sh

startup.sh
容器启动时自动执行的脚本命令,一般是直接启动项目

#!/bin/bash
set -e
service cron start
pip install -r requirements.txt
python manage.py runserver 0.0.0.0:8000

docker镜像构建
准备好以上文件之后,在Dockerfile文件目录下执行一下命令构建镜像:

docker build -t image-name .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值