Проброс портов в docker-compose
У меня есть компоуз
version: '3'
services:
mongo:
image: "mongo:4.0.2"
ports:
- "27017:27017"
grader-v2-storage:
environment:
- VAULT_ENV=LOCAL
volumes:
- .envs/local.env:/app/.deploy/.envs/local.env
build:
context: ..
dockerfile: .deploy/Dockerfile
depends_on:
- mongo
network_mode: host
Докерфайл выглядит так:
FROM ubuntu:18.04 AS BUILD
RUN apt-get update && apt-get -y install make python3.7 python3-pip git
RUN python3.7 -m pip install --upgrade pip
COPY . /app
WORKDIR /app
ENV PIP_CONFIG_FILE /app/.deploy/.secrets/pip.conf
ENV VAULT_ENV ${VAULT_ENV}
RUN PIP=pip PYTHON=python3.7 make deps
CMD PIP=pip PYTHON=python3.7 VAULT_ENV=${VAULT_ENV} make run
Если я НЕ памплю порты в монге, то она не видна (вроде очевидно). Но если я не маплю порты в сервисе, который собирается из докера, то он виден из вне, с хостовой машины. Почему так происходит?
Ответы (1 шт):
Автор решения: hedgehogues
→ Ссылка
В отличие от grader-v2-storage, в mongo не используется network_mode: host. Это означает, что в случае с grader-v2-storage докер использует одну сеть с основной (хостовой) машиной. Следовательно, все порты автоматически совпадают с хостовыми.
В случае, с mongo докер НЕ использует одну сеть с основной (хостовой) машиной. Следовательно, все порты НЕ совпадают с хостовыми и их нужно прокидывать руками