我有一个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:权限被拒绝
1条答案
按热度按时间bvn4nwqk1#
Docker Compose确实将
.env
文件加载到与compose文件相同的文件夹中,这是该命令的默认行为。我完全可以看到绕过它的必要性,但是,由于dotenv files已经成为大多数语言中的通用标准,您可能不希望Docker使用项目根目录下的 .env 文件。
实际上有an open request on their issue tracker允许跳过它。
正如@jelhan在这个特性请求中提出的,一个技巧是用
--env-file
标志覆盖环境文件,并将其传递给/dev/null
:字符串
因此,在您的工作流程中:
型
另一种方法是在命令行、shell会话或CI/CD管道中使用
COMPOSE_ENV_FILES
变量。例如:
型
或者,在您的工作流中全局定义,因此在您的worflow YAML的顶层:
型