Dockerfile構建python運?項?運?環(huán)境。

1、把容器內需要?到的?件全部復制到容器中

2、設置?個?作?錄,把項?代碼共享到?作?錄中運?

3、把需要執(zhí)?的shell命令寫在?個.sh?件中,統(tǒng)?執(zhí)?。因為Dockerfile 的指令每執(zhí)??次都會在 docker 上新建?層。所以過多?意

義的層,會造成鏡像膨脹過?;RUN 是在 docker build執(zhí)?腳本

4、配置容器啟動?動執(zhí)?腳本,CMD 在docker run 時運?運?腳本

DockerFile腳本

1# 基于鏡像基礎

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



環(huán)境?件解析

pip.conf

配置pip國內源,容器內?件路徑:/root/.pip/pip.conf

[global]

index-url=https://mirrors.aliyun.com/pypi/simple/

sources.list

配置容器環(huán)境包下載的國內源,容器內?件路徑:/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 cont


openssl.cnf

處理ssl.SSLError: [SSL: DH_KEY_TOO_SMALL] dh key too small問題

容器內?件路徑:/etc/ssl/openssl.cnf

修改?件參數(shù)即可

[system_default_sect]

MinProtocol = TLSv1.2

#CipherString = DEFAULT@SECLEVEL=2

CipherString = DEFAULT@SECLEVEL=1

localtime

同步系統(tǒng)時間到容器內,容器內?件路徑:/etc/localtime

install.sh

構建容器時需要執(zhí)?的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

容器啟動時?動執(zhí)?的腳本命令,?般是直接啟動項?

#!/bin/bash

set -e

service cron start

pip install -r requirements.txt

python manage.py runserver 0.0.0.0:8000

docker鏡像構建

準備好以上?件之后,在Dockerfile?件?錄下執(zhí)??下命令構建鏡像:

docker build -t image-nam

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容