Docker Compose - ограничить доступ службы к некоторому контейнеру и отключить доступ извне Docker - PullRequest
0 голосов
/ 02 июня 2018

У меня есть четыре услуги service1, service2, service3, postgres.Каждый выставляется через какой-то порт.Я хочу, чтобы сервис postgres был доступен только из контейнеров Docker, а не из ВМ через команду psql (отключение доступа извне Docker).

Вот мой docker-compose.local.yml

version: '3'
services:
  postgres:
    container_name: postgres
    image: registry.domain.com/postgres-multi:9.5
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      LC_ALL: C.UTF-8
      POSTGRES_USER: postgres
      POSTGRES_MULTIPLE_DATABASES: service1,service2,service3
    volumes:
      - postgres_data:/var/lib/postgresql/data/

  service1:
    container_name: service1
    build:
      context: ./service1
      args:
        environ: local
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8001:8000"
    depends_on:
      - postgres
    environment:
      DATABASE_URL: 'postgres://postgres/service1'
      DJANGO_MANAGEPY_MIGRATE: 'on'
      DJANGO_MANAGEPY_COLLECTSTATIC: 'on'
      DJANGO_LOADDATA: 'off'
      DOMAIN: '0.0.0.0'
    volumes:
      - ./service1/app:/home/service1/app/app

  service2:
    container_name: service2
    build:
      context: ./service2
      args:
        environ: local
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8002:8000"
    depends_on:
      - postgres
      - service1
    environment:
      DATABASE_URL: 'postgres://postgres/service2'
      DJANGO_MANAGEPY_MIGRATE: 'on'
      DJANGO_MANAGEPY_COLLECTSTATIC: 'on'
      DJANGO_LOADDATA: 'on'
      DOMAIN: '0.0.0.0'
    volumes:
      - ./service2/app:/home/service2/app/app

  service3:
    container_name: service3
    build:
      context: ./service3
      args:
        environ: local
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8003:8000"
    depends_on:
      - postgres
      - service1
    environment:
      DATABASE_URL: 'postgres://postgres/service3'
      DJANGO_MANAGEPY_MIGRATE: 'on'
      DJANGO_MANAGEPY_COLLECTSTATIC: 'on'
      DJANGO_LOADDATA: 'on'
      DOMAIN: '0.0.0.0'
    volumes:
      - ./service3/app:/home/service3/app/app

volumes:
  postgres_data: 

1 Ответ

0 голосов
/ 02 июня 2018

Если вы не хотите выставлять Postgres, я предлагаю удалить ваше отображение портов: ports: - "5432:5432".Это сопоставляет порт 5432 хоста с портом контейнера, что делает его доступным извне с этого порта на вашем хосте.

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