使用 docker 模式运行 runner,在 workflow 里运行 docker 挂载失败

我使用 docker 启动了一个 runner,并在我的 workflow 里的某个 step 调用了 maven 的 docker,希望使用 docker 自动编译代码并产生输出。

但是 docker run -v .:/app 挂载失败了,ls /app 发现是空的,但是目录却可以挂进去。

runner 是通过 docker.sock 把我宿主机的 docker 挂进去的,不知道会不会受到影响,以及如何解决呢? :sob:

我也遇到了好像,你猜怎么回事。

jobs:
  build:
    # 运行环境(Gitea Actions 支持的 runner 环境)
    runs-on: ubuntu-latest
    container:
      image: visonforcoding/gitea-runner-jdk8:0.1
      options: --user root
      volumes:
        - /home/yours/config-data/gitea/config:/config:rw

这里挂宿主机的绝对路径就可以了。一开始一直以为是runner容器里的目录。

发现挂上去之后都是空的。

并且当挂了一个找不到的相对目录时。会报错

failed to create container: ‘Error response from daemon: create ./config: “./config” includes invalid characters for a local volume name, only “[a-zA-Z0-9][a-zA-Z0-9_.-]” are allowed. If you intended to pass a host directory, use absolute path’

看上去也是支持挂宿主机的目录的。:rofl: