Правильные конечные точки для создания докера - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в docker compose и docker в целом, поэтому я тестирую небольшой пример.

Проблема, которую я пытаюсь решить, заключается в том, как создать динамические конечные точки, чтобы при работе локально http-вызовы выполнялись из моего интерфейса на что-то вроде localhost:8080/getPeople, но когда я запускаю эти контейнерыв цифровом океане он достигает myDomain:8080/getPeople.Я думал, что это был один из главных моментов в docker-compose, и я просто что-то здесь упускаю.Вот мой файл сочинения.

version: '3'
services:
    main-backend:
        build: ./java-backend/backend
        volumes:
            - ./java-backend/backend:/usr/src/app
        ports: 
            - 8080:8080
    angular-frontend:
        image: mrich6347/my-frontend:1.04
        volumes: 
            - ./angular-frontend/my-frontend
        ports:
            - 80:80
        depends_on: 
            - main-backend

1 Ответ

0 голосов
/ 03 марта 2019

Вот настройка, использующая обратный прокси , так что вы можете использовать относительный URL (вместо того, чтобы связываться с доменными именами на ваших веб-страницах), и которая также имеет преимущество в заботе о CORS проблемы, которые могут возникнуть при вызове Ajax на ваш бэкэнд.

Если вы не знакомы с обратными прокси-серверами, просто знайте, что все запросы http должны сначала попасть на обратный прокси-сервер, а обратный прокси-сервер позаботится о переадресации.эти http-запросы к правильному http-серверу в соответствии с набором правил.

В мире докеров очень удобным обратным прокси-сервером является Traefik .Ниже приведен пример проекта создания докера с обратным прокси-сервером, внешним интерфейсом и внутренним интерфейсом:

index.html:

<!DOCTYPE html>


    post a form to backend
    
        
        
    

    ajax call to backend
    
    

docker-compose.yml:

version: "3"
services:

  reverseproxy:  # see https://docs.traefik.io/#the-traefik-quickstart-using-docker
    image: traefik
    command: --docker
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  backend:
    image: kennethreitz/httpbin # see https://httpbin.org
    command: ["gunicorn", "-b", "0.0.0.0:8080", "httpbin:app", "-k", "gevent"]
    expose: 
      - 8080
    depends_on: 
      - reverseproxy
    labels:
      traefik.frontend.rule: PathPrefixStrip:/api
      traefik.port: 8080

  frontend:
    image: nginx
    volumes: 
      - ./index.html:/usr/share/nginx/html/index.html:ro
    expose:
      - 80
    depends_on: 
      - reverseproxy
      - backend
    labels:
      traefik.frontend.rule: PathPrefixStrip:/
      traefik.port: 80

Когда Traefik используется с Docker, вы настраиваете правила переадресации обратного прокси, добавляя метки в свойКонтейнеры для докеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...