问题标签 [docker-compose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1205 浏览

docker - How do I keep IPs in a dockerized Consul cluster on a single node after restart

I am quite new to Docker and Consul and now trying to set up a local Consul Cluster consisting of 3 dockerized nodes. I am using the progrium/consul Docker image and went through the whole tutorial and examples described.
The cluster works fine until it comes to restarting / rebooting.

Here is my docker-compose.yml:

--- node1: command: "-server -bootstrap-expect 3 -ui-dir /ui -advertise 10.67.203.217" image: progrium/consul ports: - "10.67.203.217:8300:8300" - "10.67.203.217:8400:8400" - "10.67.203.217:8500:8500" - "10.67.203.217:8301:8301" - "10.67.203.217:8302:8302" - "10.67.203.217:8301:8301/udp" - "10.67.203.217:8302:8302/udp" - "172.17.42.1:53:53/udp" restart: always node2: command: "-server -join 10.67.203.217" image: progrium/consul restart: always node3: command: "-server -join 10.67.203.217" image: progrium/consul restart: always registrator: command: "consul://10.67.203.217:8500" image: "progrium/registrator:latest" restart: always

I get message like:

[ERR] raft: Failed to make RequestVote RPC to 172.17.0.103:8300: dial tcp 172.17.0.103:8300: no route to host

which is obviously because of the new IP my nodes 2 and 3 get after the restart. So is it possible to prevent this? A read about linking and environment variables but it seems those variables are also not updated after a reboot.

0 投票
1 回答
390 浏览

bash - docker-compose 中的多进程执行和排序问题

我正在尝试为我的 API 启动一个 zookeeper 服务器和一个引导进程,另一个进程必须使用 docker-compose 将我的 API 写入的数据消耗到 zookeeper 服务器。

一旦我执行 docker-compose up,我的 zookeeper 服务器就会成功启动,并且我的 bootstrap API 能够连接到它并能够成功写入数据。

这里的限制是我的第二个进程需要等待我的 API 将数据写入 zookeeper,否则会导致异常,因为在此之前 API 不会创建任何节点。因此,在我的 docker-compose.ml 文件的命令部分,我执行了一个 bash 命令并通过添加一个 while 循环使我的引导 API 无限运行,这样程序就不会退出,并且还在我的第二个进程中添加了一个 sleep 语句以便它等到 API 完成其工作。(某种竞争条件处理)。

据我了解,docker-compose 使用 docker-compose.yml 文件中的“链接”处理排序,但不处理需要启动的各个进程的状态。我的意思是,一旦第一个进程成功退出,第二个进程就需要启动。

这是我的 docker-compose.yml 文件 -

如果您需要更多详细信息,我很乐意让您知道。提前致谢。

0 投票
0 回答
1396 浏览

docker - 在开发人员环境中在 docker 容器上运行子域的简单方法

我有用于生产的 docker 容器构建。

在“开发模式”中,它使用 docker-compose 来启动依赖项并链接它们。

容器内的应用程序运行一个站点 ( mycoolsite.tld) 及其子域 (如api.mycoolsite.tld)。

我们所做的是拥有mycoolsite.dev& api.mycoolsite.dev,使用 config vars 覆盖应用程序位置和 dnsmasq 覆盖*.mycoolsite.dev127.0.0.1以便集成测试可以从api.mycoolsite.dev.

有没有一种利用 docker-compose 来实现这一目标的好方法?

我不想在主容器中运行其他进程。我不确定如何链接 dnsmasq 容器并将其设置为正确指向原始容器。我愿意指定子域列表并/etc/hosts通过挂载覆盖,但我不能这样做,因为 docker-compose 会覆盖带有链接的主机。我还发现指定额外的主机文件很棘手。我想为原生 linux docker 以及使用通过 boot2docker VM 代理的 docker 守护进程解决这个问题。

0 投票
8 回答
218157 浏览

docker - docker-compose 仅​​适用于某些容器

我有一个docker-compose.yml包含几个容器的。其中三个用于我的应用程序(客户端、服务器和数据库),其余用于各种开发工具(例如 psql、npm、manage.py 等)。当我这样做时,docker-compose up所有这些都开始了,但我只希望三个主要的开始。由于我已经指定了链接,我可以从这三个开始,docker-compose up client但输出只来自那个容器。那么,有没有办法执行以下操作之一:

  1. 告诉 docker-compose 应该由哪些容器启动docker-compose up
  2. 从所有链接的容器中获取输出docker-compose up client
0 投票
1 回答
74 浏览

directory - 重启后 Docker 在主机上重新创建目录

我使用 docker-compose 在我的系统(ubuntu 14.04)上创建了一些容器,这些容器将主机中的目录安装到容器中。现在,每次我重新启动主机时,这些目录都会重新创建,即使容器不再存在(因此我删除了该目录)。

示例:我有一个 gitlab-ci 的容器

包含文件/目录

我已经删除了目录

现在,

每次重新启动后都会创建。我该如何摆脱它们?

0 投票
1 回答
153 浏览

django - 使用 Docker Compose 设置 Django/PostgreSQL 项目的正确方法是什么?

你能告诉我用 Docker Compose 设置和配置 Django/PostgreSQL 项目的最佳方法是什么吗?

(使用最新版本的一切,python 3.4,django 1.8.1 等)

0 投票
3 回答
6660 浏览

docker - Docker-compose 无法在 boot2docker 上安装或正常运行

我已经在我的 Windows 计算机上成功安装了 docker-machine,并且我能够在我的 windows 机器上使用 Docker CLI 在 boot2docker VM 上运行 docker 命令。

我有 docker-machine 版本 0.2.0 和 docker 1.6.2,当我在其上运行“uname -r”时,VM 会产生“4.0.3-boot2docker”。

现在我想安装 docker-compose 来管理 boot2docker 虚拟机。docker-compose 是在我的 Windows 机器上运行并像 docker 一样“远程”管理 VM,还是我必须将它安装在 VM 本身上?

在相关说明中,我尝试通过执行以下操作在我的 VM 上安装 docker-compose:

这很好,但是当我尝试运行 docker-compose 时它不起作用。

该文件位于 /usr/local/bin 中,它具有与 docker 完全相同的权限。

有什么我想念的吗?

0 投票
1 回答
2283 浏览

docker - 如何使用 docker-compose 指定图像名称

这是我的 docker-compose 文件

docker-compose build我用命令构建了图像。

如何构建命名图像?因为我得到了太多无名图像

码头工人文件

码头工人-compose.yml

无名图片太多

0 投票
3 回答
1196 浏览

apache-kafka - 卡夫卡与码头工人

我想在我的 docker 中安装一个 kafka 映像,我尝试过使用https://registry.hub.docker.com/u/wurstmeister/kafka/,但是当我在命令行 docker pull wurstmeister/kafka 中编写时,我得到了这个错误:

有人知道这个问题吗?

0 投票
1 回答
502 浏览

docker - 在 docker 内运行 docker 时出错

我的开发机器是OSX。我使用boot2docker为我的开发运行docker(称之为docker -1)。我的应用程序还使用docker容器(所以它是在 docker 内运行的 docker - 称之为docker-2)。

通常我在我的开发机器上使用docker-compose来启动docker-1。问题是当我跑步时

docker-compose 运行 web /bin/bash

然后在docker-1 bash 提示符下,我尝试启动 docker:

服务码头工人启动

该服务似乎启动,创建一个 pid 文件,但死了。/var/log/docker.log阅读:

time="2015-05-21T12:40:23Z" level=warning msg="Udev sync is not supported. This will lead to unexpected behavior, data loss and errors" time="2015-05-21T12:40:23Z" level=error msg="There are no more loopback devices available." time="2015-05-21T12:40:23Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)" time="2015-05-21T12:40:23Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)" time="2015-05-21T12:40:23Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: loopback mounting failed"

所以一开始我以为这是docker的问题。但是当我手动启动docker-1时- 绕过docker-compose并像这样运行它:

docker run --privileged=true -ti 网站 /bin/bash

然后尝试在提示符中启动 docker,一切都按预期工作:

服务码头工人启动

成功 - docker 已启动并正常运行!

这让我相信docker-compose存在问题,或者更有可能是我的设置有问题。但我浏览了手册,并没有看到任何引起我注意的东西。

码头工人-compose.yml

db: image: postgres ports: - "5432" redis: image: redis ports: - "6379" web: privileged: true build: . volumes: - .:/app environment: - A=b ports: - "3001:3000" links: - db - redis