使用docker 部署python 项目

使用python 开发了一个restfu api程序,使用docker镜像部署。主要有如下步骤,简单记录以供以后参考。

1. 创建DockerFile文件

  创建一个DockerFile文件,文件名为Dockerfile,没有后缀名
  内容如下:
  

FROM centos/python-36-centos7  #设置什么镜像进行安装,示例docker基于python3.6和centos7,所有这里使用的是centos官方提供的镜像名称

#add code to code folder     #设置code目录,此目录为项目根目录,名称随意,但需要防止项目根目录下的所有内容
ADD ./udpapi /code

#set code folder is workdir    #设置工作目录为code目录
WORKDIR /code
#set run user            #设置docker内核系统及centos允许安装使用的用户
USER root
#init system model              #安装centos 所需要的组件,此实例安装的为ssal 所需要的相关组件,调用的是一个shell脚本文件
RUN sh /code/env/init.sh
#install support           #安装python 项目所需要的模块
RUN pip install -r requirements.txt #使用pip自动给生成的项目依赖

CMD ["python","/code/api/app.py"]  #设置app.py为启动文件,docker启动后自动掉哟个此批文件

 

2. 创建Docker 镜像

  创建一个新的文件夹,用于存放生成镜像所需要的所有文件。例如本示例创建一个docker_udpAPI文件夹用来生成Docker 镜像文件,

  镜像结构如下:

  /docker_udpAPI/
    /udpapi/    #python 存放项目根目录下的所有内容
    /udpapi/api/      #项目根目录下的包,里面存放的是项目代码文件
    /udpapi/env/     #docker 运行python 需要的系统组件安装文件夹,为此实例而设置,供Dockerfile中#init system model使用
    /udpapi/config.ini  #python 项目配置文件
    /udpapi/requirements.txt       #python项目依赖的包,可以在生成镜像时自动安装,供Dockerfile 中 #install support 使用
    /Dockerfile  #第一步设置的dockerfile文件

  进入安装好docker环境的服务器,上传准备好的Docker文件夹到服务器并进入镜像目录:  

cd docker_udpAPI/

构建一个新的镜像

 docker build --build-arg http_proxy=SCDCA0000337.cn.svc.corpintra.net:3128 --build-arg https_proxy=SCDCA0000337.cn.svc.corpintra.net:3128 -t centos7-udp_api_img_v3:v1 .

参数说明:

      -t 指定镜像名称,:号后面跟着版本号

      --build-arg 设置构建时的参数,此处用来设置代理信息

后面的.一定不能少,这是一个单独的参数,表示从当前目录查找Dockerfile

  

3. 创建Docker 容器

原文地址:https://www.cnblogs.com/binw/p/12092892.html

时间: 2024-08-09 16:07:03

使用docker 部署python 项目的相关文章

docker部署python项目

前言:学习者需要进行准备工作,已经有项目的可以跳过准备工作. 1.准备工作 (1)在D盘新建项目文件夹XXX (演示文件夹:test) (2)在test文件夹下新建一个.py文件(演示文件:hello.py) (3)在hello.py 文件中写入 :print("hello world") 2.安装python镜像 打开cmd命令窗口,输入命令:docker pull python:3.6 (冒号后的版本号根据自己安装的python版本) 3.查看镜像 输入命令:docker imag

Docker 部署Django项目

使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [[email protected]]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0

docker部署django项目、mysql主从搭建、django实现读写分离

目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dockerfile 2 mysql主从搭建 3 django实现读写分离 我们使用python镜像源构建的出的容器,是一个纯净的debian系统下的python环境,在容器内部要想安装vim.nginx等,就不能使用yum install ...了,需要使用apt-get源.首先更新apt-get源,使用

Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目

Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http://blog.csdn.net/leafage_m/article/details/72081987

docker初体验:Docker部署SpringCloud项目eureka-server

Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS

Docker网络配置、Docker部署分布式项目

目标 1.Docker网络配置 2.Docker部署SpringCloud项目 Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定 1.bridge模式(默认模式) docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace, 同一个宿主机上的所有容器会

Jenkins部署Python项目实战

一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Jenkins强大的插件功能,轻松实现CI/CD,但如果部署多项目到同一台服务器涉及环境一致性问题,对此可以利用容器技术Docker解决,也可以利用Python虚拟环境例如virutalenv或conda等优秀等工具解决,在此由于后期根据requirements来安装依赖包比较慢,且后期需要将Pytho

使用docker部署Django项目步骤

docker部署Django应用 方式一:基于python基础镜像 # 第一种方式:基于python基础镜像来做 cd /home mkdir myproject cd myproject docker run -di --name=myproject -p 8080:8080 -v /home/myproject:/home python:3.6 #mac/linux window:xshell拖进去 scp django_test.zip [email protected]:/home/my

ubuntu 16.04部署python项目(Nginx+uwsgi+django)

尝试在linux上部署项目,先从最熟悉的python项目开始吧. 1.安装Nginx 命令:sudo apt-get install nginx 2.安装uwsgi,从pip仓库安装 命令:pip3 install uwsgi 3.把django项目移到服务器 通过这次操作才知道往linux上拖文件不能拖文件.因此需要打包一下才能移动文件.我这个云服务器默认支持的xxx.tar.gz格式的文件,但是在windows上压缩的时候只能压缩成zip的,所以这里有两个办法 1)在windows上安装一个