#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