1

我正在使用自托管 github 运行器对某些软件进行 vpn 访问,并且我正在尝试在自托管运行器上使用 dockerized github 操作,但我遇到了问题,因为我需要在 github 操作运行 docker run 时指定 --network 主机标志. 有没有办法让 github 操作使用主机的网络?

4

1 回答 1

0

据我所知,这是不可能的。它也不适用于步骤。不过,选项可用于 作业。唯一的另一种方法是创建一个复合动作并docker run ...直接在其中运行。这是我为自己的工作流程编写的。它稍微复杂一些,但它允许您根据变量名称前缀自动将环境变量从运行器传递到 docker 容器:

name: Docker start container
description: Start a detached container

inputs:
  image:
    description: The image to use
    required: true
  name:
    description: The container name
    required: true
  options:
    description: Additional options to pass to docker run
    required: false
    default: ''
  command:
    description: The command to run
    required: false
    default: ''
  env_pattern:
    description: The environment variable pattern to pass to the container
    required: false
    default: ''

outputs:
  cid:
    description: Container ID
    value: ${{ steps.info.outputs.cid }}

runs:
  using: composite
  steps:
    - name: Run
      shell: bash
      run: >
        variables='';
        for i in $(env | grep '${{ inputs.env_pattern }}' | awk -F '=' '{print $1}'); do
          variables="--env ${i} ${variables}";
        done;
        docker run -d
        --name ${{ inputs.name }}
        --network host
        --cidfile ${{ inputs.name }}.cid
        ${variables}
        ${{ inputs.options }}
        ${{ inputs.image }}
        ${{ inputs.command }}
    - name: Info
      id: info
      shell: bash
      run: echo "::set-output name=cid::$(cat ${{ inputs.name }}.cid)"

并使用它:

      - name: Start app container
        uses: ./.github/actions/docker-start-container
        with:
          image: myapp/myapp:latest
          name: myapp
          env_pattern: 'MYAPP_'
          options: --entrypoint entrypoint.sh
          command: >
            --check
            -v
于 2021-02-25T07:21:41.523 回答