Github Actions日志显示.env:permission denied,but I don't use this file(. env:权限被拒绝,但我不使用这个文件)

yeotifhr  于 5个月前  发布在  Git
关注(0)|答案(1)|浏览(81)

我有一个GitHub存储库,在那里我通过Docker Compose使用GitHub Actions构建,发布和部署应用程序。
执行docker compose up -d时,工作流抛出错误
stat /path/to/build/.env:权限被拒绝
虽然我不使用这个文件。
给定工作流文件 .github/workflows/action.yml

on: [push]

jobs:
  compose_up:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      ## This step is just here to reproduce the problematic behaviour
      - run: install -m 000 /dev/null .env
      - run: docker compose up -d

字符串
最小的 compose.yml 包含:

services:
  demo:
    image: alpine


我希望docker compose up -d创建容器时没有任何错误,但容器没有创建。
下面是一些试验和相应的错误

env_file:
     - /dev/null


错误:stat /path/to/file/.env:权限被拒绝

docker compose --env-file /dev/null -f docker-compose.yml up -d


错误:stat /path/to/file/docker-compose.yml:权限被拒绝

docker compose --env-file /dev/null up


错误:未提供配置文件:未找到

COMPOSE_ENV_FILES=/dev/null docker compose up


错误:stat /path/to/file/.env:权限被拒绝

bvn4nwqk

bvn4nwqk1#

Docker Compose确实将.env文件加载到与compose文件相同的文件夹中,这是该命令的默认行为。
我完全可以看到绕过它的必要性,但是,由于dotenv files已经成为大多数语言中的通用标准,您可能不希望Docker使用项目根目录下的 .env 文件。
实际上有an open request on their issue tracker允许跳过它。
正如@jelhan在这个特性请求中提出的,一个技巧是用--env-file标志覆盖环境文件,并将其传递给/dev/null

docker compose --env-file /dev/null up

字符串

  • 资料来源:https://github.com/docker/compose/issues/6741#issuecomment-596205657*

因此,在您的工作流程中:

- run: docker compose --env-file /dev/null up


另一种方法是在命令行、shell会话或CI/CD管道中使用COMPOSE_ENV_FILES变量。
例如:

- run: COMPOSE_ENV_FILES=/dev/null docker compose up


或者,在您的工作流中全局定义,因此在您的worflow YAML的顶层:

env:
  COMPOSE_ENV_FILES: /dev/null

on: [push]

jobs:
  compose_up:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: install -m 000 /dev/null .env
      - run: docker compose up -d

相关问题