Sti*_*ian 3 docker github-actions
我们打算使用 Git Actions 在每次提交时构建 Docker。
这是我们当前的 Git Actions yml:
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
docker-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Navigate to app folder
run: cd app
- name: Open Directory
working-directory: app
run: |
ls -la
- name: Build docker image
run: docker build . -t app_name -f Dockerfile
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/runner/work/git-root/app/Dockerfile: no such file or directory
Run Code Online (Sandbox Code Playgroud)
但在我的ls -lai 中看到 Dockerfile 存在:
total 48
drwxr-xr-x 4 runner docker 4096 Sep 15 13:03 .
drwxr-xr-x 6 runner docker 4096 Sep 15 13:03 ..
-rw-r--r-- 1 runner docker 93 Sep 15 13:03 .env-template
-rw-r--r-- 1 runner docker 655 Sep 15 13:03 Dockerfile
Run Code Online (Sandbox Code Playgroud)
我努力了:
actions/checkout@v1和actions/checkout@v2为什么 docker 构建找不到我的 Dockerfile?
请参阅此处的文档:
每个
run关键字代表运行器环境中的一个新进程和 shell。当您提供多行命令时,每一行都在同一个 shell 中运行。
这意味着该步骤之后工作目录不会保留cd。您的ls步骤有效,因为您明确为其设置了工作目录。
您必须cd在与构建命令相同的运行步骤中:
- name: Build docker image
run: |
cd app
docker build . -t app_name -f Dockerfile
Run Code Online (Sandbox Code Playgroud)
或者你可以设置一个工作目录:
- name: Build docker image
working-directory: ./app
run: docker build . -t app_name -f Dockerfile
Run Code Online (Sandbox Code Playgroud)
或者您可以为 docker 提供 dockerfile 的路径:
- name: Build docker image
run: docker build app -t app_name
Run Code Online (Sandbox Code Playgroud)
默认值为-f,PATH/Dockerfile其中PATH如上app。
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |