将容器DNS暴露给另一个容器?

问题描述 投票:1回答:1

使用Docker Compose和Traefik,我试图让应用程序容器在本地环境中与solr容器通信,反之亦然。

目前,我可以很好地访问浏览器中的应用程序和solr URL,但是他们无法在内部“看到”或互相交谈。

我是Docker的新手。这是我的docker compose文件的一部分,包含相关的容器:

php:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      DB_HOST: $DB_HOST
      DB_USER: $DB_USER
      DB_PASSWORD: $DB_PASSWORD
      DB_NAME: $DB_NAME
      DB_DRIVER: $DB_DRIVER
      PHP_FPM_USER: wodby
      PHP_FPM_GROUP: wodby
      COLUMNS: 80 
    volumes:
      - ./:/var/www/html:cached

  solr:
    image: wodby/solr:$SOLR_TAG
    container_name: "${PROJECT_NAME}_solr"
    environment:
      SOLR_DEFAULT_CONFIG_SET: $SOLR_CONFIG_SET
      SOLR_HEAP: 1024m
    labels:
      - 'traefik.backend=${PROJECT_NAME}_solr'
      - 'traefik.port=8983'
      - 'traefik.frontend.rule=Host:solr.${PROJECT_BASE_URL}'


  traefik:
    image: traefik
    container_name: "${PROJECT_NAME}_traefik"
    command: -c /dev/null --web --docker --logLevel=INFO
    ports:
      - '80:80'
      - '8983:8983'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

我可以在给定的URL上访问Solr,但应用程序无法在同一URL上看到它。我需要能够做到这一点,以便它可以与Solr交谈并让它爬行等。

有没有办法揭露他们,以便他们可以通过他们的主机名看到对方?

docker docker-compose
1个回答
0
投票

docker-compose内置了容器DNS解析。您可以expose容器上的特定端口以启用docker网络内的访问,或者定义port(就像您为traefik容器所做的那样)以在docker网络内部和外部公开它。在任何一种情况下,您都可以通过其名称(例如,在这种情况下为phpsolrtraefik)从另一个容器访问另一个容器。

© www.soinside.com 2019 - 2024. All rights reserved.