gpt4 book ai didi

docker - github 操作 : run multiple jobs in the same docker

转载 作者:行者123 更新时间:2023-12-04 07:40:18 24 4
gpt4 key购买 nike

我正在学习部署 github 操作以使用 docker 运行多个作业,这就是我到目前为止所拥有的:
github actions yml 文件如下所示。有 2 个职位:job0使用 Dockerfile0 构建 docker和 job1使用 Dockerfile1 构建 docker .

# .github/workflows/main.yml
name: docker CI

on: push

jobs:
job0:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and Run
run: docker build . --file Dockerfile0 --tag job0

job1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and Run
run: docker build . --file Dockerfile1 --tag job1
Dockerfile0Dockerfile1共享基本相同的内容,除了最后一行的参数:
FROM ubuntu:20.04

ADD . /docker_ci
RUN apt-get update -y
RUN apt-get install -y ... ...

WORKDIR /docker_ci
RUN python3 script.py <arg>
我想知道,我可以为第一个作业构建一个 docker,然后在从第一个作业构建的 docker 中调用多个作业执行命令吗?因此,我不必保留多个 Dockerfile 并节省一些 docker 构建时间。
最好从 Dockerfile 本地构建我的 docker 所以我希望避免使用 container从码头集线器。
runs-for-docker-actions看起来很相关,但我很难找到在本地部署操作的示例(不发布)。

最佳答案

听起来你应该不是 构建两个不同的镜像 - 不是用于 CI,也不是用于本地开发目的(如果重要的话)。
根据您提供的详细信息,我会考虑以下方法:

  • 使用 ENTRYPOINT 定义 Dockerfile这是满足您需求的最小公分母(可以是 bashpython script.py )。
  • 在 GitHub Actions 中,有一个包含多个步骤的作业 - 一个用于构建图像,其他用于使用参数运行它。

  • 例如:
    FROM ubuntu

    RUN apt-get update && apt-get install -y python3

    WORKDIR /app
    COPY script.py .

    ENTRYPOINT ["python3", "script.py"]
    Dockerfile可以使用将传递给 script.py 的任何参数执行入口点:
    $ docker run --rm -it imagename some arguments
    示例 GitHub 操作配置可能如下所示:
    jobs:
    jobname:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build the image
    run: docker build --tag job .
    - name: Test 1
    run: docker run --rm -it job arg1
    - name: Test 2
    run: docker run --rm -it job arg2
    如果您坚持将这些分离到不同的作业,据我所知,您最简单的选择仍然是重建镜像(但仍然使用单个 Dockerfile ),因为将在一个作业中构建的 docker 镜像共享给另一个工作,将是我建议尽量避免的更复杂的任务。

    关于docker - github 操作 : run multiple jobs in the same docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67509818/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com