gpt4 book ai didi

Docker-compose:在 env 文件中设置一个变量并在 Dockerfile 中使用它

转载 作者:行者123 更新时间:2023-12-04 15:07:29 24 4
gpt4 key购买 nike

我正在使用 Docker 和 Docker-compose 来构建一堆 nginx+php。

我正在尝试在我的 .env 中设置时区文件并在 Dockerfile 中使用它,但我可能会误解 documentation 中的某些内容.

.env

# Timezone
TIMEZONE=Europe/Madrid

docker-compose.yml
version '2'

services:
php:
build: php7-fpm
volumes:
- ${APP_PATH}:/var/www/app
- ./logs:/var/www/logs
environment:
TIMEZONE: ${TIMEZONE}

#[...more.stuff...]

php7-fpm/Dockerfile
FROM php:7.0-fpm
ARG TIMEZONE

#[...more.stuff...]

ENV TIMEZONE=${TIMEZONE}
RUN ln -snf /usr/share/zoneinfo/$TIMEZONE /etc/localtime && echo $TIMEZONE > /etc/timezone
RUN printf '[PHP]\ndate.timezone = "%s"\n', $TIMEZONE > /usr/local/etc/php/conf.d/tzone.ini

容器内的时区设置不正确(在 php 容器 bash 内运行 php --info | grep timezone)。如果我在 Dockerfile 中手动写入区域,它会起作用。

最佳答案

您需要在 docker compose 中传递 build 参数

version '2'

services:
php:
build:
dockerfile: php7-fpm
args:
TIMEZONE: ${TIMEZONE}
volumes:
- ${APP_PATH}:/var/www/app
- ./logs:/var/www/logs
environment传递给正在运行的容器而不是构建文件。对于您需要通过 argsbuild部分

关于Docker-compose:在 env 文件中设置一个变量并在 Dockerfile 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com