环境概述:
我正在经历什么:
我使用的群初始化命令:
docker swarm --init --advertise-addr <private ip of the EC2>
当我尝试使用公共(public) ip 时它不起作用,当我不添加 --advertise-addr
时它也不起作用到swarm init。额外的有用信息:
Dockerfile:
FROM node:12-alpine as builder
ENV TZ=Europe/London
RUN npm i npm@latest -g
RUN mkdir /app && chown node:node /app
WORKDIR /app
RUN apk add --no-cache python3 make g++ tini \
&& apk add --update tzdata
USER node
COPY package*.json ./
RUN npm install --no-optional && npm cache clean --force
ENV PATH /app/node_modules/.bin:$PATH
COPY . .
EXPOSE 8080
FROM builder as dev
USER node
CMD ["nodemon", "src/services/server/server.js"]
FROM builder as prod
USER node
HEALTHCHECK --interval=30s CMD node healthcheck.js
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "--max-old-space-size=2048" ,"src/services/server/server.js"]
我不知道它为什么会这样,我该如何解决这个问题?
最佳答案
在与高级 DevOps 工程师会面后,我们终于找到了问题所在。
事实证明,容器运行所在网络的 CIDR block 与 VPC 的 CIDR 重叠。我们所做的是将以下内容添加到 docker-compose
networks:
wm-net:
driver: overlay
ipam:
driver: default
config:
- subnet: 172.28.0.0/16 #this CIDR doesn't overlap with the VPC
关于mongodb - 与 vpc 对等的 atlas 集群未将 docker swarm 上的服务列入白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64479493/