[英]Is it possible to use GitHub Action inputs inside the Dockerfile?
[英]Use local Dockerfile in a GitHub action?
我想設置一個 GitHub Action 來構建我的項目並在本地運行測試。 當我使用.devcontainer
,我在.devcontainer/Dockerfile
中有一個Dockerfile
,它提供了構建項目所需的一切。
現在我想寫一個 GitHub Action 來在每次推送時構建項目。 在本地我會這樣做:
docker build -t local - < .devcontainer/Dockerfile
docker run -it -v $(pwd):/srv -w/srv local make test
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
不幸的是,它不喜歡container
關鍵字。
有什么線索嗎?
容器密鑰設計用於運行公開可用的 dockerized 操作,可在job.<job_id>
密鑰下使用,而不是steps
密鑰。 你不需要它來完成你的任務。
GitHub 跑步者已經安裝了大量軟件,包括 docker 和 docker 組合。
您可以輕松運行在 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
我的大部分工作流程都是這樣運行的,只使用 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
最好的解決方案是基於您的Dockerfile
構建、發布和重用 Docker 映像。
我建議按照 Github 文檔創建自定義build-and-publish-docker.yml
操作: 發布 Docker 圖像。
假設您的存儲庫是公開的,您應該能夠自動將您的圖像上傳到ghcr.io
而無需任何配置。 作為替代方案,也可以將映像發布到 Docker Hub。
構建並發布圖像后(基於先前創建的操作的on
事件,也可以手動觸發),您只需更新您的tests.yml
操作,使其使用自定義 Docker 圖像。 同樣,這里有一個關於container
選項的非常好的文檔頁面:在容器中運行作業。
例如,我正在分享我在個人存儲庫中使用的內容:
Dockerfile
:要在 CI 上構建的 Docker 映像docker.yml
:構建 Docker 映像的操作lint.yml
:使用內置 Docker 圖像的操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.