Docker-compose не предоставляет порт должным образом

#docker #networking #docker-compose

#docker #сеть #docker-compose

Вопрос:

Итак, у меня есть следующий файл Dockerfile:

 FROM adoptopenjdk/openjdk13-openj9:alpine-jre

WORKDIR /opt/Lavalink

COPY Lavalink.jar Lavalink.jar
COPY application* ./

RUN if [[ -f "./application.local.yml" ]]; then mv "./application.local.yml" "./application.yml"; fi

EXPOSE 2333

CMD ["java", "-jar", "Lavalink.jar"]
  

который затем запускается следующим docker-compose.yml:

 version: '2.4'
services:
  lavalink:
    network_mode: host
    container_name: lavalink
    image: skyrabot/lavalink:main
    restart: always
    ports:
      - '2333:2333'
  

Однако, когда я пытаюсь подключиться к службе или проверить docker ps , я вижу, что порты не опубликованы.

Вывод docker ps:

 > docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                            NAMES
e35e7cdea0a4        skyrabot/lavalink:main   "java -jar Lavalink.…"   7 minutes ago       Up 7 minutes                                                         lavalink
  

Есть идеи о том, что я мог здесь делать неправильно?

Ответ №1:

Проблема в строке network_mode: host . При предоставлении этой опции Docker будет использовать сеть хоста, а не соединять ее, и он будет полностью игнорировать настроенные порты. Вы должны отключить / удалить строку или изменить ее на network_mode: "bridge" . Для получения дополнительной информации см.https://docs.docker.com/compose/compose-file/compose-file-v2/#network_mode