通过docker-compose公开DNS条目

时间:2019-01-01 13:26:10

标签: docker docker-compose

我目前具有以下设置:

# https://github.com/SeleniumHQ/docker-selenium
version: "3"
services:
  selenium-hub:
    image: ${DOCKER_REGISTRY}selenium/hub:2.53.1-americium
    container_name: selenium-hub
    ports:
      - 4444:4444
    environment:
      - NODE_MAX_SESSION=5
      - GRID_DEBUG=false
  selenium-chrome:
    image: ${DOCKER_REGISTRY}selenium/node-chrome-debug:2.53.1-americium
    container_name: chrome
    ports:
      - 5900:5900
    depends_on:
      - selenium-hub
    environment:
      - HUB_PORT_4444_TCP_ADDR=selenium-hub
      - HUB_PORT_4444_TCP_PORT=4444
      - SHM-SIZE=2g
      - SCREEN_WIDTH=2560
      - SCREEN_HEIGHT=1440
      - GRID_DEBUG=false
    volumes:
      - /tmp/
      - /dev/shm/:/dev/shm/
  tomcat:
    build:
    context: .
    args:
      ARTIFACTORY: ${DOCKER_REGISTRY}
    container_name: tomcat
    restart: on-failure
    ports:
      - 8080:8080
    depends_on:
      - db
    volumes:
      - ./src/test/resources/tomcat/context.xml:/opt/tomcat/conf/context.xml
      - ./src/test/resources/tomcat/tomcat-users.xml:/opt/tomcat/conf/tomcat-users.xml

上面的配置设置了一个硒中心,并将Web应用程序部署到了tomcat容器。所提供的资源将具有 http://tomcat:8080/ ...

之类的href。

如果我想从外部通过href访问这些资源,则将无法解析tomcat DNS,因为DNS仅在虚拟容器网络内部公开。一种解决方案是将内部DNS公开给主机,但是我不知道如何。 另一种方法是将href值替换为字符串,并将 tomcat 替换为 localhost ,但这看起来有点脏。

你们每个人都知道如何将内部DNS公开给主机吗?

1 个答案:

答案 0 :(得分:0)

可以在https://docs.docker.com/config/containers/container-networking/找到答案 暴露/ etc / hosts和/etc/resolv.conf