DatawhaleTL24 | Docker Task06:综合实践

16 篇文章 0 订阅
16 篇文章 1 订阅


本节实践将本地项目部署在 Docker 容器中,以便于 CI/CD (持续集成和持续交付),甚至是协作交付,因为 Docker 更容易进行移植。

常用部署方案主要有 挂载部署构建镜像部署 两种方式,本文仅介绍第一种

言归正传,本次构建一个用于编写 Python 代码程序的 Docker 教程,代码很简单,就一行:print("Hello Datawhale Learner!")。麻雀虽小,五脏俱全。部署步骤如下:

本文采用的是 win10 + wsl2 的 docker 环境

1. 挂载部署

这种方式类似于常规部署,通过数据卷的方式将宿主机的 python code 挂载到容器中,然后执行 python xxx.py 执行代码,此时选择容器中的代码而非采用本地代码。

1.1 准备本地文件

python code放置于本地目录,比如 ~/.docker/app.py
在这里插入图片描述

1.2 拉取镜像

docker pull python:rc-alpine3.13

1.3 编写docker-compose.yml文件

version: '3.0'

services:

  python: 
    image: python:rc-alpine3.13  
    restart: always
    container_name: mypython
    ports:
      - 8080:8001
    volumes:
      - ~/.docker/app.py:/root/app.py  # 挂载文件
      - /etc/localtime:/etc/localtime
    environment:
      - TZ="Asia/Shanghai"
    entrypoint: python /root/app.py
    tty: true

参数解释:

  • build 指定dockerfile所在文件夹的路径 context指定dockerfile文件所在路径 dockerfile指定文件的具体名称

  • container_name 指定容器名称

  • volumes 挂载路径 z是用来设置selinux,或者直接在linux通过命令临时关闭或者永久关闭

  • ports 暴露端口信息

  • networks是用来给容器设置固定的ip

1.4 docker-compose up 批量启动容器

docker-compose up 过程中各种报错。。。

  • 错误1:
    在这里插入图片描述

当时没截图,(报错截图是剽窃的)。

经过仔细观察,错误是因为关键字和参数之前缺少空格导致的,存在此类错误的行,关键字是白色的,而不是彩色的。
在这里插入图片描述

  • 错误2:/usr/local/bin/python: can't find '__main__' module in '/root/app.py'

看的这个错误真的是一脸懵逼啊,app.py 中添加 main 函数也不行,各种搜索也没搞定,就睡了。无奈今天是打卡 ddl 了,只能硬钢。

功夫不负有心人,我在 stackoverflow 找到了点疑似有用的信息。
在这里插入图片描述然后,我就去试了。刚开始我在本地目录创建了文件夹,在 wsl2 terminal 居然看不到,后来我直接在终端创建了目录并创建了文件:
在这里插入图片描述
然后,我就修改了 docker-compose.yml ,将目录 app 挂载到容器中:

version: '3.0'

services:

  python: 
    image: python:rc-alpine3.13  
    restart: always
    container_name: mypython
    ports:
      - 8080:8001
    volumes:
      - ~/.docker/app:/root/app  # 挂载目录
      - /etc/localtime:/etc/localtime
    environment:
      - TZ="Asia/Shanghai"
    entrypoint: python /root/app/app.py
    tty: true

修改后再执行 docker-compose up 居然跑起来了,真的好高兴啊。

在这里插入图片描述

我只能说,stackoverflow 真的神奇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值