相关疑难解决方法(0)

如何在docker compose中使用环境变量

我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值.这是一个例子.今天我正在使用基本的docker run命令执行此操作,该命令包含在我自己的脚本中.有没有办法用compose实现它,没有任何这样的bash包装器?

proxy:
  hostname: $hostname
  volumes:
    - /mnt/data/logs/$hostname:/logs
    - /mnt/data/$hostname:/data
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

177
推荐指数
14
解决办法
19万
查看次数

ARG或ENV,在这种情况下使用哪一个?

这可能是一个微不足道的问题,但阅读ARGENV的文档并不能让我明白.

我正在构建一个PHP-FPM容器,我希望能够启用/禁用一些用户需求扩展.

如果可以在Dockerfile中通过添加条件并在构建命令上传递标志来完成,那将是很好的,但是不支持AFAIK.

在我的情况下,我个人的方法是在容器启动时运行一个小脚本,如下所示:

#!/bin/sh   
set -e

RESTART="false"

# This script will be placed in /config/init/ and run when container starts.
if  [ "$INSTALL_XDEBUG" == "true" ]; then
    printf "\nInstalling Xdebug ...\n"
    yum install -y  php71-php-pecl-xdebug
    RESTART="true"
fi
...   
if  [ "$RESTART" == "true" ]; then
    printf "\nRestarting php-fpm ...\n"
    supervisorctl restart php-fpm
fi

exec "$@"
Run Code Online (Sandbox Code Playgroud)

这是我的Dockerfile样子:

FROM reynierpm/centos7-supervisor
ENV TERM=xterm \
    PATH="/root/.composer/vendor/bin:${PATH}" \
    INSTALL_COMPOSER="false" \
    COMPOSER_ALLOW_SUPERUSER=1 \
    COMPOSER_ALLOW_XDEBUG=1 \
    COMPOSER_DISABLE_XDEBUG_WARN=1 \
    COMPOSER_HOME="/root/.composer" \ …
Run Code Online (Sandbox Code Playgroud)

arguments environment-variables docker dockerfile

95
推荐指数
2
解决办法
7万
查看次数

Dockerfile:有没有办法从 .env 文件中读取变量

我想读取文件中PORT定义的 Dockerfile 中的变量.env。有没有办法做到这一点?

这是我的 Dockerfile:

FROM node:11-alpine

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

ENV PORT=3000

COPY . .

RUN npm install

EXPOSE 3000

CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)

environment-variables docker dockerfile docker-compose

10
推荐指数
1
解决办法
6620
查看次数