在 GitHub 操作中使用本地 Dockerfile?

now*_*wox 2 docker github-actions

我想设置一个 GitHub Action 来构建我的项目并在本地运行测试。因为我用.devcontainer我有一个Dockerfile.devcontainer/Dockerfile提供一切我需要建立我的项目。

现在我想写一个 GitHub Action 来在每次推送时构建项目。在本地我会这样做:

docker build -t local - < .devcontainer/Dockerfile
docker run -it -v $(pwd):/srv -w/srv local make test
Run Code Online (Sandbox Code Playgroud)

GitHub 操作看起来很麻烦,但我最终写了这个:

on: push
jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: check out repository
        uses: actions/checkout@v2
      - name: build project
        container:
          image: ".devcontainer/Dockerfile"
          volumes:
            - .:/srv
        run: make test
Run Code Online (Sandbox Code Playgroud)

不幸的是它不喜欢container关键字。

有什么线索吗?

Dan*_*nyB 5

容器密钥旨在运行公开可用的 dockerized 操作,并且在job.<job_id>密钥下可用,而不是在steps密钥下。您不需要它来完成您的任务。

GitHub 运行已经安装大量软件,包括 docker 和 docker compose。

您可以轻松地运行在 GitHub 工作流程中本地运行的相同命令。

steps:
- name: Check out code
  uses: actions/checkout@v2
- name: Build docker images
  run: docker build -t local < .devcontainer/Dockerfile
- name: Run tests
  run: docker run -it -v $PWD:/srv -w/srv local make test
Run Code Online (Sandbox Code Playgroud)

我正在像这样运行我的大部分工作流程,只使用 docker-compose,所以你最终会得到更清晰的工作流程:

steps:
- name: Check out code
  uses: actions/checkout@v2
- name: Build docker images
  run: docker-compose build
- name: Setup database
  run: docker-compose run setup
- name: Run tests
  run: docker-compose run test
Run Code Online (Sandbox Code Playgroud)