1

我有一个由 compose 文件组成的 docker 设置,该文件具有 2 个服务和一个在独立容器中运行的应用程序。

我的撰写文件具有这种结构

version: '3'

services:

  synapse:
    image: docker.io/matrixdotorg/synapse:latest
    depends_on:
      - db
    ports:
      - 8008:8008
  db:
    image: docker.io/postgres:12-alpine
    # other commandds

当我做docker-compose up一个名为synapse_default. 并且突触服务能够连接到db使用db主机。那就是我的 postgres URL 看起来像这样postgres://synapse:synapse@db/postgres。您会注意到主机名是db,这是因为它们在同一个 docker 网络中运行。

现在我在另一个运行的容器中有一个独立的应用程序,docker run --network=synapse_default这个应用程序能够使用服务名称作为主机地址连接到突触和数据库服务。

我现在的问题是让突触服务与独立应用程序对话。由于此独立应用程序不是撰写文件的一部分,因此它没有服务名称,因此我不确定要指定什么作为synapse服务的主机才能访问独立应用程序。

4

2 回答 2

1

您可以通过以下方式找到“独立应用程序”的名称docker ps

~$ docker ps
CONTAINER ID     CREATED          STATUS          NAMES
205f1583e0a0     42 seconds ago   Up 40 seconds   foo

foo在上面的示例中是您可以使用的名称。205f1583e0a0如果您觉得方便,也可以使用(CONTAINER ID)。如果您希望使用特定名称(如foo示例中所示),则必须使用参数运行独立应用程序--name

docker run --name=foo ...
于 2021-05-26T07:04:10.227 回答
1

我通过指定--hostname何时运行我的独立容器来使其工作。

我只保留这个问题,因为我已经有一个回应,但这是一个薄弱的问题,因为我没有做适当的研究。快速docker run --help为我提供了我需要的答案。

于 2021-05-26T08:26:51.443 回答