Python项目打包, docker build构建docker镜像, Docker Compose (Docker编配)

这篇具有很好参考价值的文章主要介绍了Python项目打包, docker build构建docker镜像, Docker Compose (Docker编配)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

重点摘要

将本地Python项目打包构建docker镜像,并在docker中运行【流程1-8】
8、Docker Compose (Docker编配)
附录: 其他常用docker命令

 

1. 首先, 完成本地Python的开发、测试;

2.1 将项目依赖库(即本地python环境)进行导出, 使用如下命令:

pip freeze > requirments.txt

2.2 下载python项目所需依赖包到指定文件夹py_pkgs:

pip download -d py_pkgs -r requirments.txt

3. 在宿主机上, 新建文件夹, 以es-python文件夹为例, 放入如下内容:

  

	es-python  (作为Python项目根目录)
	|- modules (modules文件夹: 其中的内容是Python项目子目录文件)
	|- run.py  (Python项目的执行入口)
	|- requirements.txt  (步骤2生成的项目依赖列表)
	|- Dockerfile.txt  (步骤4即将编写的文件)

4. 编写Dockerfile, 创建一个文件叫Dockerfile, 内容如下:

在es-python文件夹下,新建一个Dockerfile文件:

 touch Dockerfile
    # Dockerfile 指令
    # 基于 基础镜像
    FROM python:3.6.10

    # 定义 元数据
    LABEL maintainer="HashSWAP" version="1.0"

    # 将构建环境下的文件OR目录, 复制到镜像中的/code目录下, 
    ADD . /code
    
    # 设置/切换 当前工作目录 为 /code
    WORKDIR /code
    
    # 根据需要, 定义 环境变量
    ENV IP 192.168.70.58
    ENV REFRESHED_AT 2022-07-20
    
    # 指定 一个OR多个 卷, 挂载到镜像 (配合后续docker cp使用)
    VOLUME ["/opt/project", "/data"]
    
    # 安装python环境支持(针对python项目)
    RUN pip install -r requirements.txt
    
    # 暴露出外界访问容器的端口
    EXPOSE 5033

    # 假设run.py是项目启动入口, 
    # ENTRYPOINT 和 CMD 指令均可用于指定容器启动时要运行的命令, 
    # 区别在于 CMD 命令可以被 docker run命令覆盖
    ENTRYPOINT ["python", "run.py"]
    CMD ["python", "run.py"]

5. 假设宿主机上已经装好docker, 此时切换到es-python路径下
 

cd /usr/hashswap/es-python



6. 执行docker build命令, 根据dockerfile构建出一个对应的镜像(注意, docker build命令最后有一个 . )

 docker build -t es-python-image .
OR 
docker build -t="es-python-image:v2022.07.21" .


注:若多次构建可以使用 –no-cache 命令,忽略之前构建过程的缓存

docker build --no-cache -t es-python-image .


7. 上述步骤完成之后, 使用docker images命令,可列出之前生成的镜像 es-python-image
 

docker images


8、根据镜像,创建、命名容器, 并执行

docker run --name es-python-app_0 -it es-python-image:v2022.07.20 python run.py
OR 
docker run --name es-python-app_1 -p 5034:5033 -it es-python-image:v2022.07.20 python run.py


注意: 5033端口应该是容器内项目暴漏出来的端口, 例如"SERVICE_PORT": 5033;
5034端口不应该跟宿主机上其他端口冲突。

至此,项目以docker容器格式运行了…

8、Docker Compose (Docker编配)
docker run如果需要的参数过多,则可以编写docker-compose.yml,然后使用docker-compose up命令来启动容器;
也可以同时启动多个容器;

8.1 在es-python文件夹下, 创建docker-compose.yml文件

touch docker-compose.yml


8.2 根据需要, 编写docker-compose.yml内容(仅以一个容器为例)
${**} 内容根据实际需要编写

    es_python_app:
        container_name: es_python_app
        image: XXXXX/es_python_iamge
        restart: always
        environment: 
        - ES_IP=${ES_IP}
        - ES_PORT=${ES_HTTP_PORT}
        - EUREKA_SERVER=${EUREKA}
        - EUREKA_APP_NAME=es_python_app
        - EUREKA_INSTANCE_HOST=${IP}
        - EUREKA_INSTANCE_IP=${IP}
        - EUREKA_INSTANCE_PORT=${ES_PORT}
        - SERVICE_PORT=${ES_PORT}
        ports:
        - ${ES_PORT}:${ES_PORT}
        volumes:
        - ./es_python:/es_python
        command: python run.py --instance_host=${USE_APP_HOST} --instance_port=${USE_APP_PORT} --eureka_server=${EUREKA}


8.3 进入docker-compose.yml所在文件路径, 运行>> docker-compose up 命令, 即可启动这些容器
# 以后台守护进程的模式, 启动DockerCompose

docker-compose up -d
docker-compose --file $DEPLOY_PATH/lib/docker-compose.yml up -d


附录: 其他常用docker命令

docker run 的其他参数:
    -d                          将容器放到后台运行
    -it                         交互式运行
    --name es-python-con01      命名 
    -p 8081:80                  将容器的80端口绑定到本地宿主机的8081端口上
    -p 80                       将容器的80端口绑定到本地宿主机的随机端口上
    -e "WEB_PORT=8090"          传递环境变量
    --restart=always            自动重启容器
    -v ./es_python:/es_python   挂载某个卷
    -w /var/log                 覆盖工作目录
    -c "while true; do echo  hello world; sleep 1; done" 
eg: 
    >> docker run --name es_python_app -p 5033:5033 -it es-python-image:v2022.07.21 python run.py      

     

获取容器详细信息

>> docker inspect es-python 



查看容器日志

>> docker logs es-python
            -f 动态监控日志
            -t 为每条日志项加上时间戳
            --tail 10 获取最后十条日志
            --tail 0 -f 跟踪最新日志


查看容器内部所有进程

>> docker top es-python


列出所有镜像

>> docker images


查找镜像

>> docker search python


停止容器

>> docker stop pm1n8d9jd9n


删除容器

>> docker rm ji0382h0hf


删除镜像

>> docker rmi a7sha923


在已经存在的容器中, 运行交互命令

>> docker exec -t -i es-python-app-1 /bin/bash


重启docker

>> sudo systemctl restart docker



保存/备份镜像文件 image

# 格式: docker save [options] images [images...]
>> docker save -o ~/software/es-python/es-python-image.tar es-python-image:latest
>> docker save > ~/software/es-python/es-python-image.tar es-python-image:v2022.07.21
# -o 和 > 表示输出到文件, ****.tar为目标文件, name:tag为源镜像名



导入镜像文件 image
 

>> docker load --input /images/ubuntu_14.04.tar
# OR 通过符号的方式来导入
>> docker load < /images/ubuntu_14.04.tar


保存容器 container

# 格式: >> docker export [options] container
#        >> docker export #ID or #Name > /app/export.tar
>> docker export -o ~/software/es-python/es-python-cont.tar es-python-app-1
>>> docker export es-python-app-1 > ~/software/es-python/es-python-cont.tar
# -o > 表示输出到文件, 


载入容器 container
注: docker import用来载入容器包,但会恢复为镜像

# 格式: >> docker import [options] file|URL|- [REPOSITORY[:TAG]]
>> docker import ~/software/es-python/es-python-cont.tar es-python-image:v202207new


 文章来源地址https://www.toymoban.com/news/detail-617673.html

到了这里,关于Python项目打包, docker build构建docker镜像, Docker Compose (Docker编配)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用docker-compose.yml构建镜像?

    使用 docker-compose.yml 文件来构建镜像,你需要在该文件中对你的服务进行定义,然后使用 docker-compose build 命令。 假设你有一个 docker-compose.yml 文件,它定义了一个名为 “web” 的服务,并指定了构建该服务所需的 Dockerfile 的路径,如下所示: 在这个例子中, build: . 指出 Dock

    2024年02月12日
    浏览(79)
  • 将Python项目(Flask)打包成Docker镜像,部署到微软云---Azure

    前情提要:首先创建一个简单的Flask项目,参考上一篇文章 链接: 将 Python (Flask) Web应用部署到Azure应用服务 下载链接:Install Docker Desktop on Windows 如果出现以上弹窗,点击链接,安装Linux 内核更新包 运行下载的更新包(系统将提示你提供提升的权限,选择“是”以批准此安装

    2024年02月09日
    浏览(59)
  • 使用 docker buildx 构建跨平台镜像 (QEMU/buildx/build)

    https://docs.docker.com/build/building/multi-platform 构建跨平台镜像是 Docker 生态系统中的一个重要话题, 因为跨平台镜像可以在多种平台上运行, 极具灵活性。为了实现这个目标, Docker 社区提供了多种方式来构建跨平台镜像, 其中之一是使用 docker manifest, 我在《使用 docker manifest 构建跨平

    2024年02月03日
    浏览(57)
  • Docker镜像文件打包和启动简易教程-Buildx构建多平台镜像

    在目标文件夹下执行以下命令 生成Dockerfile文件后,在其中写入 将本地Python项目打包成docker镜像,并在docker中运行 - 灰信网(软件开发博客聚合) 创建docker, . 必不可少 保存打包的镜像文件 命令行启动镜像文件 compase启动镜像文件 首先写入一个 docker_name.yaml 文件 docker compos

    2024年02月10日
    浏览(54)
  • Maven打包构建Docker镜像并推送到仓库

    对于开发完成的服务要发布至服务器Docker时,我刚学习了解Docker时构建镜像方式是将我的本地服务先通过maven打包称为jar包,然后再上传至我的服务器上,通过Dockerfile将其构建成为镜像。后来才了解了直接通过maven命令直接打包构建的方式,以下是完成这一操作的步骤。 修改

    2024年02月05日
    浏览(64)
  • idea打包docker镜像时出现“Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) “

     问题解决参考地址 解决方法1:先看第一张图片,一开始我也是不知道什么原因导致的,后来看到build时获取的ProgressMessage信息都是空的,然后一点点排查,然后发现是镜像命名的问题的,镜像命名不允许使用驼峰命令。   解决方法2:可能是docker 上没有内存了,也会报错。

    2024年02月11日
    浏览(49)
  • Idea使用Docker插件实现maven打包自动构建镜像

    Docker 开启TCP 服务 改写以下内容 重启服务 此时docker已经开放了2375端口,使用外部主机访问 http://docker:2375/info IDEA 集成Docker 安装Docker 插件 配置docker服务地址 点击view-services,打开docker的操作面板 双击docker01可以看到此docker服务下镜像和容器 右击docker镜像,可以创建新的容器,

    2024年02月10日
    浏览(49)
  • SpringBoot项目打包Docker镜像

    1、创建springboot项目,并在根目录新建Dockerfile文件 Dockerfile文件内容  进到项目根目录打包  构建镜像(不要忽略最后的一个点) 查看镜像列表 启动

    2024年02月16日
    浏览(46)
  • windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

    这里使用 pipreqs 进行依赖库的识别。使用 pipreqs 可以自动检索到当前项目下的所有组件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免将整个python环境的依赖包写入。 在项目的当前目录中执行 pipreqs ./ --encoding=utf8 --force 这里使用的是一个基于flask项目,

    2023年04月08日
    浏览(50)
  • Vue项目打包成docker镜像部署

    一、介绍 我们部署Vue项目,可以build之后,直接放到nginx下面即可,今天给大家介绍创建docker镜像,使用docker镜像启动容器运行部署Vue项目的方式,可以尝试尝试,原理和使用nginx部署一样,不过是使用的docker容器而已,内部还是使用的是nginx作为基础镜像。 二、docker安装 d

    2023年04月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包