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

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/appRUN /var/install.shCMD /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 contribdeb-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 .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有导师指导,该如何自己选题发CVPR?

| 背景底层计算机视觉技术,如图像增强、图像复原等,一直以来都是一个重要且热门的研究方向。传统的方法多基于稀疏编码、小波变换等技术,近年来,深度学习的兴起为该领域带来了新的发展机遇,同时大幅度提升了方法性能。…

Android硬件加速原理与实现简介

在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解&…

LeetCode 482. 密钥格式化

1. 题目 给定一个密钥字符串S,只包含字母,数字以及 ‘-’(破折号)。N 个 ‘-’ 将字符串分成了 N1 组。给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 K 个字符&#xf…

暑期学校 | 东南大学2021年国际暑期学校项目:从感知理解到智能认知 (知识图谱及应用课程)...

国际暑期学校开课啦 项目介绍 从感知理解到智能认知——走近新一代人工智能From perceptual understanding to intelligent cognition-Approaching a new generation of AI本项目是由东南大学计算机科学与工程学院、软件学院、人工智能学院组织,通过开设人工智…

The command ‘/bin/sh -c apt-get install -y vim’ returned a non-zzero code: 100

最近在学习docker时,发现使用ubuntu构建镜像时,如果有apt-get install命令,老是出现以下错误:The command ‘/bin/sh -c apt-get install -y vim’ returned a non-zzero code: 100 查了一下,发现很多人都说是使用ubun…

LeetCode 970. 强整数

文章目录1. 题目2. 解题2.1 暴力法2.2 优化双重循环1. 题目 给定两个正整数 x 和 y,如果某一整数等于 xi yj,其中整数 i > 0 且 j > 0,那么我们认为该整数是一个强整数。 返回值小于或等于 bound 的所有强整数组成的列表。 你可以按…

ACL'21 | 弱标签的垃圾数据,也能变废为宝!

文 | LawsonAbs编 | 小戏是不是感觉 NER 领域效果提升太过困难?最近一篇来自 Amazon 的文章提出使用强弱标签结合的方式来解决 NER 的问题。强弱标签结合其实非常立足实际的数据情况——干净又准确的强标签数据非常稀少,更多的是标注质量存在问题的弱标签…

聊聊clean code

clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。 也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐…

会议交流 | “数据智能与知识服务”研讨会的专家报告题目已更新!

“数据智能与知识服务”研讨会的专家报告题目有更新啦!这些专家既有久负盛名的国际知名学者、也有具有前瞻洞见的业界领袖,更有精通各种工程实战的技术大咖。他们将围绕“数据智能与知识服务”的核心主题,为您带来一场豪华的学术盛宴&#xf…

dockerfile拉取python3.7镜像

docker构建python3.7镜像:https://zhuanlan.zhihu.com/p/137288195 FROM:需要什么环境 ENV:修改path,即增加/usr/local/bin这个环境变量 ADD:将本地代码放到虚拟容器中,它有两个参数,第一个是 .…

LeetCode 849. 到最近的人的最大距离

1. 题目 在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。 至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。 返回他到离他…

可解释性:对神经网络中层特征复杂度的解释与拆分

文 | 任洁,李明杰,刘泽旭源 | 知乎大家好,我们是任洁,李明杰和刘泽旭,本研究是在张拳石老师 Qs.Zhang张拳石 指导下完成的工作。随着深度神经网络的应用日益广泛,可解释性也逐渐受到更多学者的关注。目前对…

新一代开源Android渠道包生成工具Walle

在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅—生成渠道包)已经行不通了,在此应用签名方案下如何快速生成渠道包呢&#xff1f…

python 实现组合数

def Combinatorial(n, i):设计组合数Min min(i, n )if Min 0:return 0elif Min 1:return max(n, i)else:return i * nreturn result print("1") resultCombinatorial(1,0) print("combination",result) print("2") resultCombinatorial(1,1) …

领域应用 | 机器知道哪吒是部电影吗?解读阿里巴巴概念图谱AliCG

转载公众号 | PaperWeekly概念是人类认知世界的基石。比如对于“哪吒好看吗?”,“哪吒铭文搭配建议”两句话,人可以结合概念知识理解第一个哪吒是一部电影,第二个哪吒是王者荣耀的英雄。然而机器能理解吗?针对这一问题…

LeetCode 605. 种花问题

1. 题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给定一个花坛(表示为一个数组包含0和1,其中0表示没种…

美团点评业务风控系统构建经验

本文根据“第八届中国系统架构师大会”演讲内容整理而成。 美团最初以团购的形式出现,到现在有了很大的业务形态转变。尤其是经过与大众点评的业务融合,从单一业务发展成了覆盖到店餐饮、到店综合、猫眼、外卖、酒店、旅游等多个垂直领域的综合性电商&am…

95后程序员晒出工资单:狠补了这个,真香…

作为AI 初学者来说,最大的问题就是:资料太多!!!看不完!!!不知道如何取舍!!!人的精力有限!!!大部分想转行AI算法…

python 两个字典的合并 update

A {a: 11, b: 22} B {c: 48, d: 13,"a":13} A.update(B) print(A) #{a: 13, b: 22, c: 48, d: 13}A {a: 11, b: 22,"c":66} B {c: 48, d: 13,"a":13} B.update(A) print(B) #{c: 66, d: 13, a: 11, b: 22}

领域应用 | 小米在知识表示学习的探索与实践

转载公众号 | DataFunTalk导读:知识表示是知识获取与应用的基础,贯穿了小米知识图谱的构建与应用。本文将结合小米知识图谱的构建及小爱问答场景,介绍融合文本和知识图谱的知识表示学习方法,以及知识表示在知识图谱补全、实体链接…