Указание портов как для докера, так и для файла компоновки - PullRequest
0 голосов
/ 22 мая 2019

Я создал файл компоновки Docker для запуска базы данных и микросервиса nodejs в своих собственных контейнерах.

База данных перестает работать, если я не укажу порты EXPOSE, хотя яуказал их в файле композиции.Нужно ли указывать порты в обоих местах?

база данных / Dockerfile

FROM mysql

ENV MYSQL_DATABASE=test
ENV MYSQL_ROOT_PASSWORD=password

EXPOSE 6603:3306

COPY ./schema.sql /docker-entrypoint-initdb.d/

docker-compose.yml

version: '3'

services:
  database:
    build:
      ./database
    ports:
      - "6603:3306"
    image: "test-mysql"
    container_name: "test-mysql"

  web:
    build:
      ./service
    ports:
      - "8080:8080"
    depends_on:
      - database
    image: "test-nodejs"
    container_name: "test-nodejs"
    restart: on-failure

Нужно ли указывать порты 6603:3306 в обоих База данных / Dockerfile и docker-compose.yml файл?

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

В современном Docker операторы EXPOSE - это почти чисто документация. Вы также не можете открыть порт, как только он будет открыт в Dockerfile, и стандартное изображение mysql уже будет EXPOSE 3306, поэтому вам не нужна строка EXPOSE в вашем собственном Dockerfile.

(В любом случае Dockerfile никогда не может указать конкретный порт хоста, который он хочет использовать, только порт на стороне контейнера, который должен быть сделан видимым.)

0 голосов
/ 22 мая 2019

Да, необходимо указывать порты в файле, без него нельзя будет открыть порт контейнера, а в docker compose, если вы не укажете порт, он не сможет установить соединение.

Но вДокер файл вы можете сделать

EXPOSE 3360
0 голосов
/ 22 мая 2019

только EXPOSE 3306 - В файле dockerfile, который сообщает внутреннюю базу данных контейнера, работающую на этом порту.

порты: - "6603: 3306"

Это идеально, чтосообщает внешнему контейнеру, что вы можете получить доступ к БД через порт 6603.

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