Соединение между docker контейнерами как localhost - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь докернизировать свое веб-приложение. я использую apache веб-сервер + сервер mariadb и redis, как вы можете видеть в моем docker -компонентном файле в сочетании с прокси nginx для использования локальных доменов и ssl.

все работает нормально, пока это я использую имена контейнеров для подключения к mysql / redis. Я не хочу менять все локальные хосты в своем коде на имена контейнеров mysql / redis.

Есть ли способ сохранить "localhost" в качестве хоста вместо имени контейнера?

version: "3.5"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: portal-proxy
    networks:
      - portal
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./certs:/etc/nginx/certs
      - /var/run/docker.sock:/tmp/docker.sock:ro
  portal:
    image: portal:latest
    container_name: portal-webserver
    networks:
      - portal
    volumes:
      - ./portal:/var/www/html/portal
    links:
      - db
    restart: always
    environment:
      VIRTUAL_HOST: portal.dev
  db:
    image: mariadb:latest
    container_name: portal-db
    networks:
      - portal
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_DATABASE: portal
      MYSQL_USER: www-data
      MYSQL_PASSWORD: www-data
      MYSQL_ROOT_PASSWORD: asdf1234
    volumes:
      - ./db:/docker-entrypoint-initdb.d
      - ./db:/var/lib/mysql
  redis:
    image: redis:latest
    container_name: portal-redis
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    networks:
      - portal
    ports:
      - "6379:6379"
networks:
  portal:
    name: portal

1 Ответ

0 голосов
/ 09 апреля 2020

Используйте общее имя хоста (staging.docker.host) для всех контейнеров, которое разрешается в docker ip 1.2.3.4 хоста *.

Итак, добавьте это в контейнеры:

extra_hosts:
  - "staging.docker.host:1.2.3.4"

и используйте это имя (staging.docker.host) во всех конечных точках подключения.

На локальном компьютере вы также добавляете (staging.docker.host) к своему /etc/hosts или C:\Windows\System32\drivers\etc\hosts с localhost 127.0.0.1 staging.docker.host.

...