我正在使用Docker和Docker-compose构建一堆nginx + php。
我试图在我的.env
文件中设置时区,并在Dockerfile中使用它,但是我可能会误解文档中的内容。
.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 --info | grep timezone
在php容器bash中运行)。如果我在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
被传递给正在运行的容器,而不是传递给buildfile。对于需要传递args
的build
部分
我在php项目中有一个Dockerfile,我需要在执行过程中传递用户和密码以下载库。 用户和密码必须在生产或本地 .env 文件中隐藏。目前我只是尝试本地选项,用户和密码为空。 我使用过和,但不仅登录失败,而且当我打印变量时,它们是空的。我也试过将变量硬编码,它工作正常,所以问题是变量没有从. env文件中检索。 docker compose开始如下 还有 Dockerfile: .env 的开
我正在尝试dockerize一个基本的nodejs应用程序。我的dockerfile如下 但我总是收到同样的错误 我该怎么解决?
问题内容: 我给人的印象是,可以如下将环境变量设置在一行上,以最大程度地减少中间图像。 但是,运行基于此代码段的容器并调用,我看到变量没有单独分配,而是组合为单个字符串。 但是,如果我按如下所示显式设置每个变量,则可以得到预期的输出,并且在调用变量时没有错误。 问题: 是否可以将环境变量的设置合并在一行上?如果是这样,我该怎么办?这是一个好习惯吗? 问题答案: 有两种用于指定环境的格式。如果您需要
我试图设置一个ENV等于Python脚本输出在我的dockerfile。由于分层,我无法找到将它们放在同一层的方法。我也无法找到一种方法将变量直接设置为等于脚本,我似乎无法找到如何在同一行中运行脚本。 python是一个简单的打印,称为test.py: 到目前为止,我已经在dockerfile中尝试了以下几个版本,以将ENV设置为脚本: 是否可以一步将ENV testvar设置为脚本的值,或者确保
我试图DockerizeNode.js的应用程序,而创建Dockerfile,我遇到的问题,连接到数据库的credetials存储在. txt文件。我怎么能设置的内容从该. txt文件作为一个ENV变量在我的Dockerfile?
我希望能够在docker compose中使用env变量。yml,值在docker compose up时传入。这就是一个例子。 我今天用基本的docker run命令来做这件事,它包含在我自己的脚本中。有没有一种方法可以在没有任何bash包装器的情况下用compose实现它?