【问题标题】:Docker compose bridge networkDocker 组成桥接网络
【发布时间】:2019-06-21 17:41:03
【问题描述】:

我正在开发一个有 2 个 docker compose 文件的项目。 一方面,我有一个带有 Rails 服务器的堆栈。

version: '3'
  services:
    web:
      entrypoint: ["./docker-entrypoint.sh"]
      build:
        context: .
        dockerfile: <MY FILE>
        command: bundle exec rails s -b 'ssl://0.0.0.0?key=/app/ssl/server.key&cert=/app/ssl/server.crt'
       volumes:
         - .:/app
       ports:
         - "443:3000"
       stdin_open: true
       tty: true
       networks:
         - ekoma
networks:
  ekoma:
    driver: bridge

另一方面,我有一个 wordpress 实例

version: '3'
  services:
    wordpress:
      image: wordpress:latest
    ports:
      - 8888:80
    networks:
      - app_ekoma
networks:
  app_ekoma:
    external:
      name: app_ekoma

我正在简化撰写文件,但如果需要,我可以提供更多。 出于某种原因,从我的 wordpress 实例中,我可以使用“web”主机,甚至可以启动 curl 调用: curl web:3000

但是请求挂起并且没有完成。

也可能是 Rails 服务器问题,但我将其用作 API,并且从网络外部连接到 localhost:443 没有问题。

感谢您的关注,任何想法将不胜感激:)

【问题讨论】:

  • https://web:3000 是否工作得更好,直到出现 TLS 证书错误?
  • 哈哈好,谢谢!

标签: ruby-on-rails docker networking docker-compose bridge


【解决方案1】:

您可以创建一个User-defined Bridge network,然后将您的两个容器连接到您的桥接网络。

创建桥梁:

>> docker network create --driver bridge my-user-defined-bridge-net

然后进行健全性检查,看看有什么连接到它(现在什么都不应该连接):

>> docker network inspect my-user-defined-bridge-net

在输出中向下滚动一点,直到看到 Containers 属性,它列出了连接的容器。现在,它应该是空的:

"Containers": {}

接下来,在每个 docker-compose 文件中,将容器连接到我们刚刚创建的网桥。

您的第一个文件是:

version: '3'
  services:
    web:
      container_name: container_one
      entrypoint: ["./docker-entrypoint.sh"]
      build:
        context: .
        dockerfile: <MY FILE>
        command: bundle exec rails s -b 'ssl://0.0.0.0?key=/app/ssl/server.key&cert=/app/ssl/server.crt'
       volumes:
         - .:/app
       ports:
         - "443:3000"
       stdin_open: true
       tty: true
       networks:
         - ekoma

networks:
  ekoma:
    external:
      name: my-user-defined-bridge-net

你的第二个文件是:

version: '3'
  services:
    wordpress:
      container_name: container_two
      image: wordpress:latest
      ports:
        - 8888:80
      networks:
        - app_ekoma

networks:
  app_ekoma:
    external:
      name: my-user-defined-bridge-net

使用这些新的 docker-compose 文件重新启动两个容器并检查网桥的状态:

>> docker network inspect my-user-defined-bridge-net

"Containers" 道具现在应该显示

"Containers": {
            "asdfasdfasdfasdfasdfasdfasdfasdfasdf1324654a1sd65fa56sdf": {
                "Name": "container_one",
                "EndpointID": "51asdf5sd651as65d1f1a65sdf1a63sd5f1asd65fa56sdf56asd6f5a65s1df",
                "MacAddress": "02:42:ac:1d:00:02",
                "IPv4Address": "172.29.0.2/16",
                "IPv6Address": ""
            },
            "a6s51dfa65sd1fas6d5f1a6s5df0asd65f0a6sd5f41asd658f4sdf": {
                "Name": "container_two",
                "EndpointID": "6a5sdfa65sd1fa6s5df1as6d51fas6d51fa6s5d1f6a5sd16sd6a1s",
                "MacAddress": "02:42:ac:1d:00:03",
                "IPv4Address": "172.29.0.3/16",
                "IPv6Address": ""
            }
        },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多