首页 > 解决方案 > 使用堆栈部署的 Docker Swarm 应用程序无法从外部访问

问题描述

我是 Docker swarm 的新手,因此不确定该怎么做。

我正在尝试使用 Swarm 中的堆栈创建一个 drupal 站点和一个数据库。

我的配置由 3 个 VM(使用 Virtual Box)组成,它们连接到桥接网络适配器并与主机(10.0.0.X)位于同一子网上。

部署应用程序后,没有错误,但是我无法从主机访问该站点。

我还验证了以下端口上所有节点之间的连接性

7946/tcp、7946/udp 和 4789/udp

我错过了什么?这是我正在使用的撰写文件:

version: '3.1'

services:

  drupal:
    container_name: drupal
    image: drupal:8.2
    ports:
      - "8080:80"    
    networks: 
      - drupal_net
    volumes:
      - drupal-modules:/var/www/html/modules
      - drupal-profiles:/var/www/html/profiles       
      - drupal-sites:/var/www/html/sites      
      - drupal-themes:/var/www/html/themes
 
  postgres:
    networks: 
      - drupal_net
    container_name: postgres
    image: postgres:9.6
    secrets:
      - psql-password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/psql-password
    volumes:
      - drupal-data:/var/lib/postgresql/data
networks: 
  drupal_net:
    driver: overlay

volumes:
  drupal-data:
  drupal-modules:
  drupal-profiles:
  drupal-sites:
  drupal-themes:

secrets:
  psql-password:
    external:
      name: psql-pw

笔记:

  1. 我试图将主机添加到 Swarm,并且只能通过 localhost 访问该应用程序。如果我输入其中一个节点的 IP 地址,我仍然没有收到任何响应。

  2. 从同一网络上的另一台设备上,该应用程序仍然无法访问。(我能够ping通包括主机在内的所有节点)

  3. 我试图创建到单个节点 Swarm,但仍然无法访问该应用程序

  4. 提到的所有场景我也用一个简单的 nginx 应用程序进行了测试

标签: dockerdocker-composevirtualboxdocker-swarmdocker-stack

解决方案


推荐阅读