Tag: 环境variables

Docker中的环境variables

我有一个应用程序在2个容器中工作。 一个nodeJS和一个nginx容器。 他们正在一起工作。 在开发者的代码中是一个src / app / app.config.js (function () { 'use strict'; angular .module('app') .constant('config', { URL: 'http://localhost', PORT: '8888', }); })(); 在开发者的情况下,URL和端口是好的。 在本地构build之后查看该应用程序。 但是我们在做什么? 那么我们有一个jenkins执行npm-install,gulp build等等。 正确生成的文件夹将由Dockerfiles复制(一个用于nginx,一个用于nodejs)。 之后,我们可以用这个命令启动容器: docker run –restart=always -d –name "nodejs" our-nodejs-image:11 docker run –restart=always -d -p 80:80 –name nginx –link nodejs:nodejs our-nginx-image:11 主要的问题是以下几点。 URL和PORT必须更改。 因此,比如我们在ec2-123:80上运行我们的容器, ec2-123:80不是将URL更改为ec2-123 ,将PORT更改为80 (因为nginx正在作为我们的nodejs的反向代理)。 所以在这种情况下,我们正在失去docker的优势(在每个环境中运行一个映像)。 […]

ECS Docker Container获取运行cron的envvariables

我正在通过AWS ECS运行Docker容器,并试图使用由ecs-agent设置的环境variables。 特别我抓住了 $AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 我作为根login到容器,当我检查env上面存在。 但是,当我使用sudo检查env时,环境variables不存在。 我正在运行一个使用这个variables的python脚本,当我以root身份运行这个脚本时,脚本能够find这个环境variables并且成功执行。 不过,我需要使用cron运行这个脚本。 到目前为止,我还没有能够让cron运行和访问根环境variables。 任何想法,将不胜感激。

在Docker中保留Symfony2应用程序开发的环境variables值

我有一个在Docker容器中运行的Symfony2应用程序。 parameters.yml文件被设置为挑选环境variables,如下所示: framework: secret: "%env.secret%" … Docker撰写文件的内容是: services: my-website: env_file: my-website.env build: . expose: – "80" volumes: – .:/app 环境variables文件是: SYMFONY__ENV__SECRET=1234567890 … 一切工作正常,当通过“app.php”访问。 然而,当在开发模式(通过app_dev.php)访问它无法挑选环境variables。 有没有办法使用环境variables? 我不想创build具有硬编码值的另一个parameters.yml文件。 比你!

设置从主机到docker容器的PHPpath

我知道这是一个相当愚蠢的问题,但我有以下问题。 我使用一年以上的Docker和一个编辑器来改变我的程序,这就是作为一个卷的hostet。 我没有安装PHP,因为它只能在容器内部运行,就像几乎所有其他的服务器程序(如SQL,Apache)。 现在我安装了Visual Studio代码,它找不到使用IntelliSense的path。 我知道我可以在我的docker-compose或Dockerfile中设置一个环境path来为我的容器设置一个环境。 但是容器是运行的,除了像docker cp这样的命令以外,都是隔离的。 是否可以设置从我的主机到容器机器的path,以便Visual Studio代码可以在容器内部findPHP并将其用于智能感知? 或者我必须在我的主机上安装PHP? 但是我认为这会破坏Docker容器的使用。 例如在Visual Studio代码configurationsettings.json "php.validate.executablePath": DOCKERCONTAINER/usr/bin/php

如何过滤docker客户端环境variables到docker运行命令?

假设在我的docker客户端机器上,我有以下的环境variables: myValA=B DOCKER_CONTAINER_VALUE_C=networksettingD myValE=F DOCKER_CONTAINER_VALUE_G=arbitrarySettingH 我想将这些值中的两个传入我正在运行的Docker容器中。 (包含DOCKER_CONTAINER的那些)。 现在我可以手动硬编码,如下所示: docker run -e DOCKER_CONTAINER_VALUE_C='networksettingD' -e DOCKER_CONTAINER_VALUE_G='arbitrarySettingH' –name container_name dockerhub_id/image_name 但是我想让这个过程自动化。 就像是: docker run -e ${env | grep "DOCKER_CONTAINER"} … 我的问题是: 如何筛选docker客户端环境variables到docker运行命令?

如何设置将root用户的所有环境variables复制到另一个特定的用户

在我的docker容器中,我正在像entrypoint.sh这样的特定用户运行一个命令: sudo -u appuser "$@" 这工作正常,但是,它不会设置运行容器时使用 – –link选项创build的任何环境variables。 题 是否有可能将所有存在的root用户的环境variables设置为其他特定用户(在本例中为appuser ) 注意:这个讨论相关的问题。 这就是我不能只使用USER命令的原因如何让Docker容器中的非root用户访问主机上挂载的卷

Docker组成variables

我有一个docker撰写的问题,我想使用内部conainervariables来创build另一个variables: myapp: image: image depends_on: – anotherimage environment: – "VAR1=var1" – "VAR2=${HOSTNAME}_${VAR1}" 我在VAR2中得到的是Docker引擎主机的主机名,而对于VAR1则没有 我想有这样的东西: 39ed52c98e92_var1

如何防止在docker容器中传递给ruby应用程序的ENVvariables

keys.env包含私钥: KEY="—–BEGIN PRIVATE KEY—–\nBADANBgkqhki……xjiWsX7Qjoh8XH8nAECgYEAkCNIy1eICdUUt6HgV\nnEGKpwDETJTIJdmW5MlOzsURI/RSnE2Qas/k758isGLaA4m9dZJoxuP/pCfwcvLj\nwmjVBPdTTNF6ADgor6ZVIp6os5wIIurZH7f8yXaggTEyk5r8K6qxz9t/D\n4FaPDsZ2icg0N5i2y/2Sa0w=\n—–END PRIVATE KEY—–\n" (KEY的值应该用引号括起来,因为它包含\ n) docker-compose.yml包含env_file参数: version: '2' services: testenv: image: ruby:2.4-slim env_file: – ./keys.env 我用ruby app运行容器: docker-compose run testenv 并尝试使用ENV ['KEY']variables: irb(main):001:0> ENV['KEY'] => "\"—–BEGIN PRIVATE KEY—–\\nBADANBgkqhki……xjiWsX7Qjoh8XH8nAECgYEAkCNIy1eICdUUt6HgV\\nnEGKpwDETJTIJdmW5MlOzsURI/RSnE2Qas/k758isGLaA4m9dZJoxuP/pCfwcvLj\\nwmjVBPdTTNF6ADgor6ZVIp6os5wIIurZH7f8yXaggTEyk5r8K6qxz9t/D\\n4FaPDsZ2icg0N5i2y/2Sa0w=\\n—–END PRIVATE KEY—–\\n\"" 该variables是逃脱,但我需要干净的private_key。 我还没有在Docker文档中find答案。 我看到两个工作的解决scheme,但没有一个在我看来是对的。 将private_key存储在.env文件中,并且不带引号。 应用程序中的模块将对此值进行解码。 在应用程序的Unescape价值(像这样最好的方法来逃避和unescapestring在Ruby? ) 有没有办法通过Docker的内置function来解决这个问题?

Docker从命令或文件设置环境variables

我需要设置一个环境variablesCLASSPATH 。 在这个variables中,我需要设置一个命令的结果: hadoop classpath –glob 这将返回大量的Java库,他们都需要设置到该CLASSPATHvariables。 最大的问题是我只能在ENTRYPOINT构build完成后才能运行这个命令,这意味着我必须在ENTRYPOINT执行这个命令。 但我不能得到它的工作。 我尝试了不同的方法: ENTRYPOINT ["sh", "-c", "export CLASSPATH=$(hadoop classpath –glob) …." ENTRYPOINT ["sh", "-c", "set CLASSPATH=$(hadoop classpath –glob) …." ENTRYPOINT ["sh", "-c", "CLASSPATH=$(hadoop classpath –glob) …." ENTRYPOINT ["sh", "-c", "/bin/bash && export CLASSPATH=$(hadoop classpath –glob) …." 但没有任何工作。 该命令本身正在工作,我testing它使用: ENTRYPOINT ["sh", "-c", "echo $(hadoop classpath –glob) >> /tmp/classpath.tmp …." […]

Docker用env_file参数指定的环境variables在dockerfile中不工作

这是我docker-compose.yml docker-compose build percona_dev运行docker-compose.yml文件的代码片段。 percona_dev: build: docker/percona dockerfile: percona-dev env_file: docker.env 我已经在docker.env指定了这样的环境variables: USERNAME=xxx PASSWORD=xxx DESKTOP_IP=192.168.1.1 PLAYBOOK_LOCATION=/path/to/location/ 这是我的名为percona-dev Dockerfile的相关部分: FROM percona:5.6.24 MAINTAINER xxx RUN apt-get update && apt-get install wget RUN wget –ftp-user=$USERNAME –ftp-password=$PASSWORD ftp://$DESKTOP_IP/$PLAYBOOK_LOCATION/inventory/localhost -O /tmp/playbook/hosts EXPOSE 3306 ENTRYPOINT [“/usr/bin/mysql”] 不幸的是,环境variables不能被识别,并且构build失败: Step 5 : RUN wget –ftp-user=$USERNAME –ftp-password=$PASSWORD ftp://$DESKTOP_IP/$PLAYBOOK_LOCATION/inventory/localhost -O /tmp/playbook/hosts —> Running in 3595b5ce9581 […]