Tag: configuration

从configuration文件执行docker run命令

在我的泊坞窗运行命令中有几个参数 docker run –rm -v /apps/hastebin/data:/app/data –name hastebin -d -p 7777:7777 -e STORAGE_TYPE=file rlister/hastebin 我可以把所有这些参数放在一个默认的/configuration文件,所以我不必在运行命令中明确提到它?

如何使容器在Docker Compose中等待其他容器

我正在学习本教程,尝试使用Docker Compose来启动基础架构,而不是调用docker客户端的shell脚本。 一切工作正常,除了gitlab容器之前启动gitlab-postgreql和gitlab-redis,从而失败,因为它预计这些服务已经运行。 我试图使用depends_on属性,但它没有解决问题。 据我所知,如果其他容器的启动速度更快,这也无济于事。 经过一番研究,我发现,Docker Compose不提供开箱即用的解决scheme来控制容器的创build顺序。 怎么会这样? 我不敢相信这样的一个基本特征没有实现。 似乎Docker正在绊倒它自己的聪明之处,忘记了基础知识。 现在,我如何控制容器创build顺序,而不需要一些疯狂的支持脚本(这将使整个configuration比首先使用脚本/ docker客户端更复杂) 这是docker-compose.yml,因为它是 version: '2' services: gitlab-postgresql: image: sameersbn/postgresql:9.4-3 volumes: – /srv/docker/gitlab/postgresql:/var/lib/postgresql environment: – DB_NAME=gitlabhq_production – DB_USER=gitlab – DB_PASS=password gitlab-redis: image: sameersbn/redis:latest volumes: – /srv/docker/gitlab/redis:/var/lib/redis depends_on: – "gitlab-postgresql" gitlab: image: sameersbn/gitlab:7.14.3 volumes: – /srv/docker/gitlab/gitlab:/home/git/data ports: – "2222:22" – "8080:80" environment: – GITLAB_PORT=8080 – GITLAB_SSH_PORT=2222 depends_on: […]

在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议的方法是什么?

Docker容器和Ansible Playbook之间有什么区别?

在我看来,这两个工具都用于轻松安装和自动configuration应用程序。 不过,我有限地使用了Docker,并没有使用Ansible。 所以我有点困惑。 每当我search这两种技术之间的比较时,我会发现如何组合使用这些技术的细节。

如何在基于Docker的微服务中pipe理每个环境的数据?

在微服务体系结构中,我很难掌握如何pipe理环境特定的configuration(例如数据库或消息代理的IP地址和凭证)。 假设您有三个微服务(“A”,“B”和“C”),每个微服务由不同的团队拥有和维护。 每个团队都需要一个团队集成环境…他们在哪里使用他们的微服务的最新快照,以及所有依赖微服务的稳定版本。 当然,你也需要QA /分期/生产环境。 大图的简化视图如下所示: “微服务A”团队环境 微服务A( SNAPSHOT ) 微服务B(STABLE) 微服务C(STABLE) “微服务B”团队环境 微服务A(STABLE) 微服务B( SNAPSHOT ) 微服务C(STABLE) “微服务C”团队环境 微服务A(STABLE) 微服务B(STABLE) 微服务C( SNAPSHOT ) 质量保证/分期/生产 微服务A(稳定,发布等) 微服务B(稳定,发布等) 微服务C(STABLE,RELEASE等) 这是很多的部署,但是这个问题可以通过持续集成服务器来解决,也许可以像Chef / Puppet /等等。 真正困难的部分是每个微服务都需要一些特定的环境数据给每个被部署的地方。 例如,在“A”团队环境中,“A”需要一个地址和一组证书来与“B”交互。 但是,在“B”团队环境中,“A”的部署需要不同的地址和凭证来与“B”的部署进行交互。 而且,当你接近生产时,像这样的环境configuration信息可能需要安全限制(即只有某些人可以修改甚至查看它)。 那么,在微服务体系结构中,如何维护特定于环境的configuration信息并将其提供给应用程序呢? 一些方法浮现在脑海中,尽pipe它们都有问题: 让构build服务器在构build时把它们烧到应用程序中 – 我想你可以创build一个每个环境属性文件或脚本的回购,并且为每个微服务的构build过程伸出并拉入适当的脚本(你也可以有一个单独的,限制访问回购生产的东西)。 不过,你需要大量的脚本。 对于微服务可以部署的每个地方的每一个微服务,基本上都是单独的。 将它们烘焙到每个环境的基础Docker镜像中 – 如果构build服务器将微服务应用程序放入Docker容器中作为构build过程的最后一步,则可以为每个环境创build自定义基础镜像。 基本映像将包含一个shell脚本,用于设置所有您需要的环境variables。 您的Dockerfile将被设置为在启动您的应用程序之前调用此脚本。 这与之前的要点也有类似的挑战,因为现在你正在pipe理大量的Docker镜像。 在运行时从某种registry中提取环境信息 – 最后,可以将你的每个环境configuration存储在Apache ZooKeeper(甚至只是一个普通的数据库)中,然后让你的应用程序代码在运行时将其拉入它启动。 每个微服务应用程序都需要知道它在哪个环境(例如启动参数),以便知道从registry中获取哪一组variables。 这种方法的优点是,现在您可以使用完全相同的构build工件(即应用程序或Docker容器)从团队环境一直到生产。 […]

在Laravel 5应用程序中,特定于环境的值应该保存在哪里?

我试图围绕在Laravel 5中进行configuration的.env方式来进行包装。 这里是我的故事:我将现有的Laravel 4应用程序转换为Laravel 5.我目前有不同的环境( local和production )和级联configuration系统很好地工作。 我有我的环境特定的应用程序configuration在app/config下的单独的文件夹中。 我的应用程序目前在Docker容器中部署(和开发)。 为了构build部署,我使用Dockerfile来构build我的应用程序映像(基于我的master分支),然后将其推送到存储库并拉到生产服务器上。 所以现在我试图将我的configuration转换为Laravel 5,我有点困惑。 我读过的所有东西都说你将.env文件添加到.gitignore文件,所以它不包含在你的版本库中。 我明白这一点的安全原因 – 不要提交敏感的API密钥/密码/无论你的存储库。 但我不知道如何确保我的生产.env文件包含在我的构build步骤,如果它不是存储库的一部分。 我的想法是把我的生产.env文件放在我的文件系统之外的某个地方,然后在需要的时候复制它。 这是pipe理这个“最佳做法”吗? 这是别人怎么做的? 谢谢!

在mac os下的Docker deamonconfigurationpath

我在Mac OS(El Capitan 10.11.4)的Version 1.12.0(build 10871)中使用docker,我想为docker守护进程提供一个configuration文件。 在Ubuntu下,将configuration置于/etc/default/docker (请参阅文档 )。 不幸的是,我无法弄清楚在Mac OS中放置configuration的位置 有任何想法吗?

docker工人在生产?

我打算使用docker来构build我的开发和生产环境。 我构build基于Django的应用程序。 在dev上,我使用docker-compose来pipe理所有本地容器。 这是一个不错的和方便的解决scheme。 我运行Django,3个芹菜队列,rabbitmq,2个postgresql数据库。 但是我的生产环境是完全不同的。 我需要运行gunicorn和nginx。 此外,数据库将使用AWS RDS运行。 当然,Django应用程序将需要更多的东西,如不同的设置文件或更多的环境variables。 我徘徊如何划分。 我也应该在docker-compose吗? 这将需要单独的文件的开发和生产,也许更多在未来的舞台等…如果是的话,如何部署它? 使用jenkins,拉,重新启动所有使用撰写? 或者,也许我应该使用可以直接运行docker命令? 但是我不相信我的开发者和现实生活一样,而且很难预测它的行为。 我喜欢在所有环境中运行组合文件的想法,但我不确定是否为不同环境维护多个文件是一个好主意。 开发需要更less的环境variables和更less的configuration。 我可以使用env文件来设置所有的生产。 但是,我应该保持我的生活设置在回购? 以前我在设置时设置了所有环境variables,这是单独的过程。 现在看起来configuration和部署是一样的吗? 也许这是Docker的方式?

Ansible docker_container'否请求URL中的主机',docker pull正常工作

我正在尝试使用Ansible操作手册在AWS上configuration我的基础架构。 我有这个实例,并且能够configurationdocker-engine,docker-py等,我发誓,昨天这个工作正常,而且我从来没有改变过代码。 我的剧本的相关部分是: – name: Ensure AWS CLI is available pip: name: awscli state: present when: aws_deploy – block: – name: Add .boto file with AWS credentials. copy: content: "{{ boto_file }}" dest: ~/.boto when: aws_deploy – name: Log in to docker registry. shell: "$(aws ecr get-login –region us-east-1)" when: aws_deploy – name: Remove .boto […]