相关疑难解决方法(0)

获取Dockerfile中的环境变量值

我正在为一个红宝石应用程序构建容器.我的应用程序配置包含在环境变量中(使用dotenv加载到应用程序内).

其中一个配置变量是app的公共ip,它在内部用于建立链接.我需要添加一个dnsmasq条目,将此ip指向容器内的127.0.0.1,这样它就可以获取应用程序的链接,就好像它不是容器化的一样.

因此ENV,我试图在我的Dockerfile中设置一个将环境变量传递给容器的文件.

我试了几件事.

ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`
Run Code Online (Sandbox Code Playgroud)

但是,所有内容都传递了"REQUEST_DOMAIN"字符串,而不是环境变量的值.有没有办法将环境变量值从主机传递到容器?

docker

236
推荐指数
7
解决办法
19万
查看次数

如何为开发和生产配置不同的dockerfile

我使用docker进行开发和laravel项目的生产.我有一些稍微不同的dockerfile用于开发和生产.例如,我将本地目录挂载到开发环境中的docker容器,这样我就不需要为代码中的每个更改执行docker构建.

由于挂载的目录仅在运行docker容器时可用,所以我无法在dockerfile中输入"composer install"或"npm install"等命令进行开发.

目前我正在管理两个docker文件,有什么办法可以用单个docker文件做这个,并决定在通过发送参数进行docker build时运行哪些命令.

我想要实现的是

在docker文件中

...
IF PROD THEN RUN composer install
...
Run Code Online (Sandbox Code Playgroud)

在docker build期间

docker build [PROD] -t mytag .
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

20
推荐指数
4
解决办法
1万
查看次数

在 Dockerfile 中使用环境变量

我在一个 php 项目中有一个 Dockerfile,我需要在执行过程中传递一个用户和一个密码来下载一个库。

用户和密码必须隐藏在生产环境或本地 .env 文件中。目前我只是尝试本地选项,用户和密码为空。

我使用了"${USER}"and ${USER},但不仅登录失败,而且当我打印变量时,它们变空了。我也试过把变量硬编码,它工作正常,所以问题是变量不是从 .env 文件中检索的。

docker-compose 启动如下

version: '3'

services:
  server:
    build:
      context: .
      dockerfile: docker/Server/Dockerfile
    container_name: "server"
    ports:
      - 80:80
      - 8888:8888
    networks:
      - network
    env_file:
      - .env
    command: sh /start-workers.sh
Run Code Online (Sandbox Code Playgroud)

和 Dockerfile:

FROM php:7.3-cli-alpine3.10
RUN apk add --update

#
# Dependencies
#
RUN apk add --no-cache --no-progress \
    libzip-dev zip php7-openssl pkgconfig \
    php-pear php7-dev openssl-dev bash \
    build-base composer

#
# Enable PHP extensions
#
RUN docker-php-ext-install bcmath …
Run Code Online (Sandbox Code Playgroud)

php environment-variables docker dockerfile

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

docker ×3

dockerfile ×2

environment-variables ×1

php ×1