Как сделать контейнер видимым только для других контейнеров в той же сети - PullRequest
0 голосов
/ 15 июня 2019

Я только начал изучать докер и пытаться адаптировать его под свои нужды.Учитывая такой простой файл docker-compose

version: '3'

services:

    my-client:
        container_name: my-client
        build:
            context: ./client
            dockerfile: Dockerfile_dev
        ports:
            - "3000:3000"
        volumes:
            - ./client/src:/srv/dev/client/src
            - ./client/public:/srv/dev/client/public
        command: npm run start

    my-nginx:
        container_name: my-nginx
        build: ./nginx
        links:
            - my-client
        expose:
            - 80
        ports:
            - "80:80"

(nginx просто передает запросы клиенту)

В настоящее время я могу получить доступ к своему клиенту через localhost и через localhost:3000, чтонехорошо.Я хочу, чтобы только 1 порт был виден за пределами моей сети, а все остальные контейнеры были скрыты.Можно ли настроить сеть таким образом, чтобы outside->nginx->client, но не outside->client

1 Ответ

1 голос
/ 15 июня 2019

Просто бросьте это:

ports:
            - "3000:3000"

Тогда единственный способ получить доступ к этому контейнеру - снаружи -> nginx -> клиент (или localhost, если вы попробуете с компьютера, на котором работают контейнеры). Nginx все равно сможет добраться до контейнера через порт 3000, но другие не смогут.

...