docker打包python程序

1、程序依赖包写入requirements.txt文件

requests
numpy
pillow
tornado

2、编写Dockerfile

# 拉取基础镜像
FROM python:3.6.5

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 把当前所有文件拷贝到容器的/code文件夹里,并根据requirements.txt安装python依赖包
RUN mkdir /code \
&& apt-get update -y \
&& apt-get install -y libsm6 \
&& pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . /code 
RUN pip install -r /code/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
WORKDIR /code

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

CMD ["python3","http_server.py"]

3、执行命令

Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务。
容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。
宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81
容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80

启动容器时,选择一个端口映射到容器内部开放端口上
-p   小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
-P   大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。

# 制作镜像
sudo docker build -t python_fun:test .

# 运行镜像,docker容器的端口映射到宿主机的端口

sudo docker run -ti --name http_server -p 8888:8888 python_fun:test

4、docker-compose启动

docker-compose.yml.service,通过配置docker环境变量的方式,传入一些参数设置

version: '3.1'

services:
  python_mini_service:
    build:
      context: .
      dockerfile: Dockerfile.cpu
    image: python3.6_cpu:v1
    restart: always
    working_dir: /root/projects
    ports:
      - 8888:8888
    environment:
      - TZ=Asia/Shanghai
      - host-ip=192.168.34.168
      - host-port=8888

工程代码中相应的run_cfg.py也要做修改

import os

http_config = {
    # 本地服务 ip 线上的话需要写具体部署http服务的ip
    'server_host': os.environ['host-ip'],
    # 服务名
    'app_name': 'video-python',
    # 端口
    'port': int(os.environ['host-port'])
}

运行

docker-compose -f docker-compose.yml.service up -d

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值