Docker 部署一个用Python编写的Web应用并打包传到DockerHub仓库

[toc]

Docker 部署一个用Python编写的Web应用并打包传到DockerHub仓库 20211013

docker,docker hub,python ,web

1、在gitee中创建相应的仓库:

git@gitee.com:humengxu/docker-cd.git

该仓库通过python的flask 起了一个web应用,通过Dockerfile进行制作容器镜像操作

Dockerfile文件内容

# 使用官方提供的Python开发镜像作为基础镜像
FROM python:2.7-slim

# 将工作目录切换为/app
WORKDIR /app

#将当前目录下所有的内容复制到/app下
ADD . /app

# 使用pip命令安装这个应用需要的依赖
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# 允许访问容器的80 端口
EXPOSE 80

# 设置环境变量
ENV NAME World

# 设置容器进程为:python app.py ,即这个Python应用的启动命令
CMD ["python","app.py"]

2、拉取到服务器中,进入到PythonWeb的根目录

运行

docker build -t helloworld .

-t参数 是给镜像加一个Tag,即一个名字 docker build 会自动加载当前目录下的Dockerfile文件,然后依次执行文件中的原语 Dockerfile中每个原语的执行都会生成对应的镜像层

3、构建镜像完成后,查看

docker image ls  或  docker images

4、启动镜像启动容器

docker run -p 9092:80 helloworld

镜像名helloworld后不用写内容,因Dockerfile已经指定了CMD,否则,就需要追加命令:

docker run -p 9092:80 helloworld python app.py

5、启动完容器,查看信息

docker ps
访问容器中的内容: curl http://localhost:9092

当然也可以用容器内的IP访问,查看容器内容IP的方法

docker inspect containerID | grep "" ,通过 http://<容器IP地址>:80 访问

6、准备将容器的镜像上传到DockerHub中,这样就可以复用

注册Docker Hub账户,然后docker login登录

用docker tag给容器镜像给一个完整的名字

docker tag helloworld firehmx/helloworld:v1

firehmx是我的Docker Hub的用户名,也叫镜像仓库,v1是给这个镜像分配的版本号

7、提交Docker Hub操作

docker push firehmx/helloworld:v1

这样镜像就上传到了Docker Hub中

也可以通过 docker commit 命令将一个正在运行的容器直接提交为一个镜像

8、其他位置使用

docker pull firehmx/helloworld:v1

备注:由于Docker Hub 在国内拉取镜像较慢,后续自行搭建私有库,或者用国内的仓库

9、镜像加速

鉴于国内网络问题,后续拉取 Docker镜像十分缓慢,我们可以需要配置加速器来解决,

我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者
%programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
请在该配置文件中加入(没有该文件的话,请先建一个):
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

胡梦旭博客
请先登录后发表评论
  • latest comments
  • 总共0条评论