.env 文件中的更改未反映在 Docker 容器中

Ivi*_*ski 5 php environment-variables laravel docker docker-compose

该问题与在 Docker 容器中运行的 Laravel 项目有关,但适用于任何类型的项目和任何类型的容器,因为 .env 文件在所有平台上都很常见。

更改文件中的变量值后.env,在 docker 容器内运行的项目不会看到更改,并且仍使用以前的值运行。在 Laravel 中,有一些命令可以清除缓存的配置,但这似乎不会更改正在运行的容器内的值。即使使用--force-recreateflag 运行 docker-compose 也不会更新容器 .env 值。所以基本上,以下任何一项都不起作用:

docker exec -it container_name php artisan config:clear
docker exec -it container_name php artisan cache:clear
docker-compose run --build --force-recreate

在正在运行的 Docker 容器中更新环境变量值的正确方法是什么?

Ber*_*rtC 1

如果执行以下操作,您应该会看到容器中的更改:

创建一个包含一些内容的 .env 文件。

然后创建这个 docker-compose.yml:

version: '3.7'
services:
  tmp:
    image: alpine
    container_name: SomeContainer
    volumes:
      - ./.env:/root/.env:rw
    command: ["sleep", "300d"]
Run Code Online (Sandbox Code Playgroud)

启动后

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

更改 .env 文件后,更改应立即反映在容器中。