我有作曲
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
Dockerfile 看起来像这样:
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
如果我不在 monge 中泵送端口,那么它是不可见的(看起来很明显)。但是,如果我不映射从 docker 构建的服务中的端口,那么它从外部可见,从主机可见。为什么会这样?
不像
grader-v2-storage
,mongo
不用于network_mode: host
. 这意味着,对于grader-v2-storage
docker,它使用与主(主机)机器相同的网络。因此,所有端口都会自动匹配主机端口。在
mongo
docker的情况下,它不使用与主(主机)机器相同的网络。因此,所有端口都与主机端口不同,需要手动传递