Почему я могу получить доступ к своему контейнеру Docker -Compose через localhost в веб-браузере хоста, но не в контейнере? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть два контейнера: один для Cypress, а другой для моего веб-приложения. У меня они оба настроены в файле docker-compose.yml следующим образом:

version: '3.2'
services:
  pa-portal:
    image: web_app_image
    container_name: pa_portal
    volumes:
      - productDB:/web_app/db
    ports:
      - "8080:8080"
  cypress:
    image: "cypress/included:4.4.0"
    depends_on:
      - pa-portal
    environment:
      - CYPRESS_baseUrl=http://pa-portal:8080
    working_dir: /cypress-testing

    volumes:
      - ./:/cypress-testing

volumes:
  productDB:

Из контейнера Cypress (платформа тестирования) я могу получить доступ к веб-приложению, используя http://pa-portal:8080, но из браузера на моем единственный способ получить доступ к веб-приложению, запущенному контейнером pa_portal, - использовать localhost:8080.

Почему существуют разные URL-адреса в зависимости от того, откуда я получаю доступ?

Есть ли какие-то фундаментальные знания, которые мне нужны для исследования

1 Ответ

1 голос
/ 05 августа 2020

Все работает так, как задумано.

Имя службы - это просто перенаправление ВНУТРИ docker -инфраструктуры. Это не работает как host-entry за пределами этой области.

Чтобы получить то, что вы хотите, загляните в Traefik. Вы можете настроить его с помощью контейнера docker, добавить метки в свой docker compose и с помощью этого traeffik направить ваш localhost на заданное имя домена, которое вы хотите.

Я нашел в Google простое руководство для этого, но документы traefik тоже в порядке: https://www.digitalocean.com/community/tutorials/how-to-use-traefik-as-a-reverse-proxy-for-docker-containers-on-ubuntu-16-04

...