Tag: 环境variables

在docker-compose.yml的入口点env文件中的环境variables

我想在入口点使用docker-compose中的env-filevariables: # environment.env HOST=example.com # docker-compose.yml some_service: … env_file: ['environment.env'] entrypoint: ['myexecutable', '–host', '$HOST'] 有没有办法做到这一点? 我发现只有一个解决scheme: # docker-compose.yml some_service: … env_file: ['environment.env'] entrypoint: sh -c 'myexecutable –host $$HOST' 但它看起来违反了docker概念“每个容器一个进程”(因为会有2个进程: sh和myexecutable )。 而容器不能正常停止,我不得不用docker kill或docker-compose kill杀死它。

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

这可能是一个微不足道的问题,但是为ARG和ENV阅读文档并没有把事情弄清楚。 我正在构build一个PHP-FPM容器,我想给用户启用/禁用一些扩展function。 如果可以在Dockerfile中添加条件并在构build命令上传递标志,可能会很好,但是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 […]

AngularJS的可重用Docker镜像

我们有一个AngularJS应用程序。 我们为它写了一个dockerfile,所以它可以在每个系统上重用。 dockerfile不是最好的做法,它可能是一些奇怪的构build(构build和托pipe在同一个文件中),但它只是创build在每个开发人员的每台PC上本地运行我们的angularjs应用程序。 Dockerfile: FROM nginx:1.10 … Steps to install nodejs-legacy + npm RUN npm install -g gulp RUN npm install RUN gulp build .. steps to move dist folder 我们用docker build -t myapp:latest .构build我们的镜像docker build -t myapp:latest . 每个开发人员都可以运行我们的应用程序与docker run -d -p 80:80 myapp:latest 但现在我们正在开发其他后端。 所以我们在DEV中有一个后端,在UAT中有一个后端,所以我们需要在/config/xx.json使用不同的URL { … "service_base": "https://backend.test.xxx/", … } 我们不希望每次更改该URL,重build图像并启动它。 我们也不想声明一些可以在那里使用的URL(dev,uat,prod,..)。 […]

将Heroku环境variables传递给Docker实例

我在Heroku上构build了一个必须在Docker容器中运行的RoR应用程序。 为此,我使用官方的Dockerfile 。 由于Heroku非常常见,我需要一些附件来使这个应用程序完全可用。 在生产中,variablesDATABASE_URL在我的应用程序中可用。 但是,如果我尝试一些使用环境variables的其他附件(在我的情况下是Mailtrap ),则variables在运行时不会被复制到实例中。 所以我的问题很简单: 在Heroku上执行时,如何让docker实例知道环境variables? 正如你可能会问,我已经知道,我们可以在docker-compose.yml指定一个环境指令。 我想避免这一点,以便能够通过项目库共享这个文件。

我们可以通过cmd行传递ENVvariables,同时通过dockerfile构build一个docker镜像吗?

我正在处理一个任务,涉及使用Dockerfile构build以centOs为基础的docker映像 。 dockerfile中的一个步骤需要设置http_proxy和https_proxy ENVvariables,以便在代理之后工作。 由于这个Dockerfile将被具有不同代理的多个团队使用,我想避免为每个团队编辑Dockerfile。 相反,我正在寻找一个解决scheme,允许我在构build时传递ENVvariables,例如, sudo docker build -e http_proxy = somevalue。 我不确定是否已经有一个选项可以提供这个function。 我错过了什么吗?

将variables从容器开始传递到文件

我在Dockerfile中有以下几行,我希望在应用程序启动之前将configuration文件中的值设置为默认值,并在启动容器时使用-e选项提供可选的设置。 我正在尝试使用Docker的ENV突击队 ENV CONFIG_VALUE default_value RUN sed -i 's/CONFIG_VALUE/'"$CONFIG_VALUE"'/g' CONFIG_FILE CMD command_to_start_app 我在CONFIG_FILE文件中显式地使用了stringCONFIG_VALUE,并且Dockerfile的默认值被正确replace。 但是,当我运行带有-e CONFIG_VALUE=100的容器时,不执行replace,保留在Dockerfile中设置的默认值。 当我做 docker exec -i -t container_name bash 并在容器内echo $CONFIG_VALUE环境variables确实包含所需的值100。

在docker-compose.yml文件中获取或设置envvariables

我有一个docker-compose.yml文件,在那里我定义: extra_hosts: – "localhost:${MY_MACHINE_IP}" 如果我之前将MY_MACHINE_IP定义为环境variables,它将起作用。 我想实现的是执行如下操作: extra_hosts: – "localhost:<get MY_MACHINE_IP from env if it exists, if not set MY_MACHINE_IP env variable with value <docker-machine-ip>>" 换句话说:我想在extra_hosts部分定义它,如果MY_MACHINE_IP已经被指定,那么得到它,如果没有 – 设置这个env。 variables与值=我的docker机器ip。 可能吗?

在Docker中相当于env-file的Kubernetes

背景: 目前我们正在使用Docker和Docker Compose来处理我们的服务。 我们将不同环境的configuration外化为定义由应用程序读取的环境variables的文件。 例如prod.env文件: ENV_VAR_ONE=Something Prod ENV_VAR_TWO=Something else Prod 和一个test.env文件: ENV_VAR_ONE=Something Test ENV_VAR_TWO=Something else Test 因此,我们可以简单地在启动容器时使用prod.env或test.env文件: docker run –env-file prod.env <image> 然后,我们的应用程序将根据prod.env定义的环境variables来select其configuration。 问题: 有没有办法从Kubernetes中的文件提供环境variables(例如定义一个pod时),而不是像这样硬编码它们: apiVersion:v1 类:Pod 元数据: 标签: 上下文:docker-k8s-lab 名称:mysql-pod 名称:mysql-pod 规格: 容器: – ENV: – 名称:MYSQL_USER 值:mysql – 名称:MYSQL_PASSWORD 值:mysql – 名称:MYSQL_DATABASE 值:样本 – 名称:MYSQL_ROOT_PASSWORD 价值:supersecret image:“mysql:latest” 名字:mysql 端口: – containerPort:3306 如果这是不可能的,那么build议的方法是什么?

Dockerfile中带有双星号的环境variables

我已经注意到,在一些Dockerfile中,环境variables是使用特定expression式来指定的,这些expression式执行某种variablesreplace,比如: ENV PASSWORD **Random** ENV NAME **False** 我无法在Docker官方文档中find对这些expression式的任何引用。 在哪里可以find可用于Dockerfile的可能expression式的列表,它们的含义是什么?

ENV 。编码返回#<Encoding:ASCII-8BIT>在生产时被分配一个Unicodestring

我在我的Rails应用程序中使用ENV [“VARIABLE”]设置为一个Unicodestring。 在生产(这是一个docker容器),这个ENV [“VARIABLE”]用Encoding:ASCII-8BIT (虽然ENV [“PWD”],例如编码为Encoding:UTF-8 )。 在development ,每个variables都使用Encoding:UTF-8进行Encoding:UTF-8 。 ASCII-8BIT的编码阻止我在视图中显示variables。 原因是什么? 我该如何解决?