安装 docker

已经按照:docker 命令 教程,安装完成 docker,并创建了包含完整 requirement 的镜像:py_container_1

工程上传

首先将本地(线上)工程目录 zip 压缩,并上传到 linux 实体机,后解压缩,进入到工程目录:cd /home/q/www/python_project_1

Dockerfile 文件创建

在同级目录下创建 Dockerfile 文件(无扩展名): Dockerfile 的指令详解参考:http://www.ityouknow.com/docker/2018/03/15/docker-dockerfile-command-introduction.html

# 基于镜像基础
FROM py_container_1:3.6

# 设置代码文件夹工作目录
WORKDIR /home/q/www/python_project_1

# 复制当前代码文件(. 是指当前文件夹下的所有文件包括目录等)到容器指定目录中
ADD . /home/q/www/python_project_1

# Run servers.py when the container launches,这里的 servers.py 是工程的启动代码
CMD ["python", "servers.py"]
  • 其中 FROM 是指从哪个镜像创建(这里用的是已经安装好 requirement 的镜像,因此不需要增加 RUN pip install -r requirements.txt 的指令了)
  • WORKDIR 用于在容器内设置一个工作目录:设置后,Dockerfile 中其后的命令 RUN、CMD、ENTRYPOINT、ADD、COPY 等命令都会在该目录下执行。
  • COPY <源路径>... <目标路径>,COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的<目标路径>位置,例子:COPY package.json /usr/src/app/
  • ADD <源路径>... <目标路径>:COPY 和 ADD 的用法一样,ADD 基础上增加了一些功能。比如 <源路径> 可以是一个 URL
  • CMD 与 RUN 指令的区别:RUN 在构建的时候执行,并生成一个新的镜像,CMD 在容器运行的时候执行,在构建时不进行任何操作:CMD ["executable","param1","param2"]
创建工程的镜像

然后执行:sudo docker build -t python_project_1 . (python_project_1 为创建的镜像名称,后面有个 . 表示当前目录)

创建工程的容器

然后执行:sudo docker run -it -p 1234:9002 --name project_test python_project_1,运行镜像,生成并启动一个叫 project_test 的容器,启动时的日志,和发布线上时的日志是一样的

在这里插入图片描述

调用

POST 请求时,使用的是 Linux 机器的 ip 或名字(也就是截图里的 2345 ),然后 +加上 Linux 的实际端口号(不是容器的端口号)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐