前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django容器(上): 自定义基础镜像

Django容器(上): 自定义基础镜像

作者头像
用户1560186
发布于 2019-12-19 08:12:21
发布于 2019-12-19 08:12:21
78900
代码可运行
举报
文章被收录于专栏:运维录运维录
运行总次数:0
代码可运行
开始之前

某个 Python 项目,基于 Python:3.6Django:1.11 框架开发,希望项目能够容器化,然后可以通过 docker-compose 等工具编排容器/应用,本篇文章的目标是自定义Django基础镜像

与《为什么需要自定义一个基础镜像?》文章相同,基础镜像作用是为项目镜像提供支持

它构建在 Python 官方镜像之上,添加项目一些需要的扩展模块,例如 DjangopymysqlGunicorn等常用模块,具体以项目实际需求为准。

最后为能够高效的处理静态文件请求,使用 Nginx 反向代理 Django 应用,不过这是下一篇文章要讲的。

《Django容器(下): 使用Gunicorn管理Django》

敬请期待 公众号每周四 docker专题更新文章。

环境描述
代码语言:javascript
代码运行次数:0
运行
复制
容器镜像: python:3.6
容器系统: debian 9 (stretch)
Docker版本: CE - 17.06.0
Docker主机: Ubuntu Server 16.04
操作步骤

1. 基础镜像构建目录

代码语言:javascript
代码运行次数:0
运行
复制
tree base/

base/
├── conf
│   ├── 404.html
│   ├── default.conf
│   ├── nginx.conf
│   ├── requirements.txt
│   ├── sources.list
│   ├── ssl
│   │   ├── domain.crt
│   │   └── domain.key
│   └── supervisord.conf
└── `Dockerfile`

2 directories, 9 files

2. 基础镜像 Dockerfile 文件

代码语言:javascript
代码运行次数:0
运行
复制
cat base/Dockerfile

# start-base
FROM python:3.6
MAINTAINER dongnan #<@微信公众号:运维录>

# apt
COPY conf/sources.list /etc/apt/sources.list
RUN apt-get update \
        && apt-get install -y supervisor nginx \
    && apt-get clean \
        && rm -r /var/lib/apt/lists/*

# env
ENV TZ=Asia/Shanghai \
    LANG=en_US.UTF-8

# django
COPY conf/requirements.txt /root/
RUN pip --no-cache-dir install -r /root/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

这个 Dockerfile 很短,因为是项目基础镜像,只做一些基础工作就可以了。

它首先安装 supervisor nginx 软件包,然后是设置容器的环境变量。

最后使用 pip 安装项目依赖,django 、pymysql 都在 requirements.txt 这个文件中定义。

3. 构建镜像

代码语言:javascript
代码运行次数:0
运行
复制
docker build -t start-base .

Sending build context to Docker daemon    767kB
Step 1/8 : FROM python:3.6
# ...省略
Successfully built fc3f6f242301
Successfully tagged start-base

4. 验证镜像

基础镜像准备完毕后,就可以在项目镜像使用了,这里没有为基础镜像添加 TAG 标记,所以它是默认的 latest 。

代码语言:javascript
代码运行次数:0
运行
复制
docker images --format "{{.Repository}} {{.Tag}}" 

start-base latest
小结

最后来总结下文章中的知识点

  • 基础镜像作用是为项目镜像提供支持,并在基础镜像之上添加项目代码,完成项目镜像构建工作。
  • 使用 supervisor 在容器中管理 nginx、gunicorn (python WSGI Server)进程。
  • pippython 包管理工具,该工具提供了对python 包的查找、下载、安装、卸载的功能。
  • pip -i 选项, 指定仓库地址,默认为 https://pypi.org/simple,速度很慢建议使用国内仓库。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
实战 | ​Docker ubuntu:18.04 镜像制作
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。近年来,Docker方式越来越受欢迎,本文针对Docker ubuntu的镜像操作进行了详细阐述:包括两种方式。
3D视觉工坊
2020/12/11
6.1K0
为什么需要自定义一个基础镜像?
对于使用php (python)等开发的项目,由于是解释型语言并不需要编译代码这个步骤(go或者java将依赖打包到可执行程序(包)中),但是往往还需要安装一些依赖的库或者第三方模块。
用户1560186
2019/12/04
1.6K0
海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
    随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依赖和被依赖关系,这就会带来一个世界性难题,项目部署的时候需要运维来手动配制服务之间通信的协议和地址,稍有不慎就会导致服务异常,同时如果服务器因为坏道或者其他原因导致更换物理机,重新部署新环境的成本也会非常之高。因此,我们就会寄希望于Docker这种的容器技术可以让我们构建产品所需要的所有的服务能够迅速快捷的重新部署,并且可以根据需求做横向扩展,且能够保证稳定的容灾性,在出现问题的时候可以利用守护进程自动重启或者启动容灾备份。
用户9127725
2022/08/08
7510
海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
构建 PaddleOCR 镜像并部署在内网环境的 ARM 集群
项目上使用到了 PaddleOCR,且项目部署环境访问外网需要向安全部门申请添加白名单,流程非常复杂。
查克
2024/12/06
3250
构建 PaddleOCR 镜像并部署在内网环境的 ARM 集群
四位一体水溶交融,Docker一拖三Tornado6.2 + Nginx + Supervisord非阻塞负载均衡容器式部署实践
    容器,又见容器。Docker容器的最主要优点就在于它们是可移植的。一套服务,其所有的依赖关系可以捆绑到一个独立于Linux内核、平台分布或部署模型的主机版本的单个容器中。此容器可以传输到另一台运行Docker的主机上,并且在没有兼容性问题的情况下执行。而传统的微服务架构会将各个服务单独封装为容器,虽然微服务容器化环境能够在给定数量的基础架构内实现更高的工作负载密度,但是,在整个生产环境中创建、监视和销毁的容器需求总量呈指数级增长,从而显著增加了基于容器管理环境的复杂性。
用户9127725
2022/08/08
4850
四位一体水溶交融,Docker一拖三Tornado6.2 + Nginx + Supervisord非阻塞负载均衡容器式部署实践
Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
本文主要介绍了如何使用 Docker 部署一个 Django 应用,包括创建 Docker 镜像、编写 Dockerfile、运行容器和连接主机上的应用。同时,还提供了在启动容器时使用的命令和参数,以及将主机上的目录映射到容器内的方法。最后,文章还对一些可能出现的问题和错误进行了排查和解决。
田飞雨
2016/07/20
9.5K1
Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
使用 Docker 让部署 Django 项目更加轻松
那么我们有没有办法,让本地开发环境和线上环境保持一致?这样我们在部署上线前,就可以在本地进行验证,只要验证没问题,我们就有 99% 的把握保证部署上线后也没有问题(1%保留给程序玄学)。
HelloGitHub
2021/05/14
1.6K0
Docker 部署Django博客项目
我之前部署我的博客项目(Django应用),没用Docker,直接借助的宝塔Linux服务器面板在服务器上部署的,部署起来也是十分的方便,使用了Django+Nginx+Supervisor+Gunicorn部署,可查看我写过的一片博客:Centos安装python3并使用Nginx+Gunicorn+virtualenv+supervisor来部署django项目。
緣來
2020/01/02
1.5K0
Docker 部署Django博客项目
快速安装Kubernetes集群与Django应用示例
使用k8s需要搭建私有的镜像仓库,一些基础的应用镜像可以从docker hub上直接拉取,但是自己的包含代码的项目镜像需要提前打包好上传到自己的镜像仓库,k8s不能像docker-compose那样通过Dockerfile直接生成镜像
菲宇
2019/06/12
2.6K0
【CTFd】靶场安装与配置(Docker一键配置版)
【CTFd】靶场安装与配置这由于上一次的配置有点小问题,主要是Whale插件不再支持CTFd3.x版本,于是找了个新的插件使用 并且找到了更好的解决方式,不用那么麻烦配环境了 CTFd-Whale最新维护仓库 这次我采用Docker一键部署,并且稍加改动添加了中文包 成果图
正汰
2024/01/16
1.3K0
【CTFd】靶场安装与配置(Docker一键配置版)
Django应用容器化
三大核心要素:镜像(Image)、容器(Container)、仓库(Registry)
cuijianzhe
2022/06/14
8400
Django应用容器化
python测试开发django-83.Dockerfile部署django项目
现在流行用 docker 部署环境,python 开发的 django 项目也可以写个 Dockefile 文件,方便docker部署。 django 是依赖于python环境的,所有镜像制作是用一个python的镜像基础上把我们需要的环境添加过去就可以了。
上海-悠悠
2020/10/27
1.2K0
【云原生| Docker】 部署 Django & mysql 项目
从整体上看,我们定义了二个容器,分别是app、db,容器之间通过定义的端口进行通讯。定义了网络db_network,只有处在同一网络下的容器才能够互相通讯。不同网络之间是隔离的,即便采用同样的端口,也无法通讯。
计算机魔术师
2022/08/19
2K0
【云原生| Docker】 部署 Django & mysql 项目
Docker 基于Dockerfile创建镜像实践
简单说,就是创建一个服务型的镜像,即运行基于该镜像创建的容器时,基于该容器自动开启一个服务。具体来说,是创建一个部署了nginx,uwsgi,python,django项目代码的镜像,运行基于该镜像创建的容器时,自动开启nginx,uwsgi等服务。简单理解就是在容器内部,通过nginx+uwsgi部署Django项目
授客
2021/08/18
9460
向量数据库入坑:使用 Docker 和 Milvus 快速构建本地轻量图片搜索引擎
本篇文章,我来分享如何使用 Docker 来搭建一个能够跑在本地的轻量图片搜索引擎,实现日常生活中我们习以为常,但是实现起来颇为麻烦的功能:以图搜图。
soulteary
2023/03/05
3.9K1
向量数据库入坑:使用 Docker 和 Milvus 快速构建本地轻量图片搜索引擎
docker容器化python服务部署(supervisor-gunicorn-flask)
本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/13223767.html
用户7225427
2020/09/03
2.6K0
docker容器化python服务部署(supervisor-gunicorn-flask)
Docker 容器化部署 Python 应用
Docker是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。
Python数据科学
2019/09/08
3.4K1
Python部署手记:django, gunicorn, virtualenv, circus, nginx
手记,以免下次配置再入坑。有些细节未做详细描述,如果有问题,可以评论或私信我。 初次尝试搭python服务器,强撸python3,花样作死。过程中出现各种错误,不停google,搜到的时间大部分在2012年-2014年。让我不禁怀疑,真的没人用py搭服务器嘛?怎么比ruby还少。。。 相关技术点:django, gunicorn, virtualenv, circus, nginx 陆续花了一个月时间,先是折腾flask,完了折腾django,再到部署。感觉身体被掏空。说好的人生苦短,要用python呢。相
CDA数据分析师
2018/02/05
1.9K0
Python部署手记:django, gunicorn, virtualenv, circus, nginx
Django容器(下): 使用Gunicorn管理Django
在上一篇文章《Django容器(上): 自定义基础镜像》我们已经封装好了Django项目的基础镜像,接下来需要在基础镜像之上做些收尾工作,主要以下几点:
用户1560186
2019/12/19
2K0
Docker uwsgi django
参考基本操作后,结合uwsgi部署生产环境,uwsgi.ini和Dockerfile都放在项目根目录下
vanguard
2021/02/03
1.4K0
相关推荐
实战 | ​Docker ubuntu:18.04 镜像制作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验