如何在自己的 docker 容器中使用 github 操作/checkout@v2

Posted

技术标签:

【中文标题】如何在自己的 docker 容器中使用 github 操作/checkout@v2【英文标题】:How to use github actions/checkout@v2 inside own docker container 【发布时间】:2021-08-17 05:48:15 【问题描述】:

我有自己的 php 映像,我想用它来为我的项目运行测试。

container: rela589n/doctrine-event-sourcing-php:latest

services:
  test_db:
    image: postgres:13-alpine
    env:
      POSTGRES_DB: des
      POSTGRES_USER: des_user
      POSTGRES_PASSWORD: p@$$w0rd

steps:
  - uses: actions/checkout@v2

  - whatever_needed_to_run_tests_inside_container

结帐操作失败并出现此类错误:

EACCES: permission denied, open '/__w/doctrine-event-sourcing/doctrine-event-sourcing/6977c4d4-3881-44e9-804e-ae086752556e.tar.gz'

这是合乎逻辑的,因为在新的 docker 容器中没有这样的文件夹结构。我想做的是在提供runs-on: ubuntu-20.04 的虚拟机内运行结帐操作,并为 docker 配置卷,以便它可以访问代码。但是,我不知道这样做既不是一个好习惯,也不知道如何实现这一点。我想即使可以这样做,它也不适用于其他操作。

【问题讨论】:

您可能应该找到一种方法来避免使用container 指令。我从来没有见过一个值得所有麻烦的好用例,没有它就无法更容易地完成。 【参考方案1】:

尝试使用我自己的 Docker 映像时遇到了同样的问题。就我而言,不能即时安装我需要的所有东西,所以我必须解决这个问题。 看来 GitHub 使用名为 runneruser 1001 和名为 dockergroup 121 运行 Docker 映像。添加组后,添加用户,将用户添加到sudoers,问题就解决了。 请注意,结帐路径以 /_w 开头,这很奇怪。如果我在没有容器的情况下执行actions/checkout@v2,则路径为/home/runner。还不知道怎么解决。

【讨论】:

以上是关于如何在自己的 docker 容器中使用 github 操作/checkout@v2的主要内容,如果未能解决你的问题,请参考以下文章

如何将运行在 Docker 容器中的 Flyway 连接到运行在 Docker 容器中的数据库?

如何在容器中运行docker命令

docker如何制作自己的镜像

如何实现docker服务重启容器不停止

如何将WebLogic服务器运行于Docker容器中

容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?