我希望能够在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) 这可能是一个微不足道的问题,但阅读ARG和ENV的文档并不能让我明白.
我正在构建一个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) 我想读取文件中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)