背景:
我在Ubuntu 20.04。我正试着用码头构图来建立图像。
这是我的docker-compose
文件
version: "3.8"
services:
web:
build: ./frontend
network_mode: "host"
ports:
- 3000:3000
api:
build: ./backend
network_mode: "host"
ports:
- 3001:3001
environment:
DB_URL: mongodb://db/foo-app
db:
image: mongo:4.0-xenial
ports:
- 27017:27017
volumes:
- foo-app-data:/data/db
volumes:
foo-app-data:
下面是我的两个Dockerfile
文件:
# ./backend file
FROM node:16.3.0-alpine3.13
RUN addgroup app && adduser -S -G app app
WORKDIR /app
USER root
COPY package*.json ./
# --- debug try
RUN npm cache clean --force
RUN npm config set registry https://registry.npmjs.org/
RUN npm install -g @angular/cli
# ---
RUN npm install
COPY . .
RUN chown app:app /app
USER app
EXPOSE 3001
CMD ["npm", "start"]
# ./frontend file
FROM node:16.3.0-alpine3.13
RUN addgroup app && adduser -S -G app app
WORKDIR /app
USER root
COPY package*.json ./
# --- debug try
RUN npm cache clean --force
RUN npm config set registry https://registry.npmjs.org/
# ---
RUN npm install
COPY . .
RUN chown app:app /app
USER app
EXPOSE 3000
CMD ["npm", "start"]
错误:
当我运行docker-compose build
时,会引发以下错误:
Step 8/14 : RUN npm install -g @angular/cli
---> Running in ce221adb18f6
npm ERR! code EAI_AGAIN
npm ERR! syscall getaddrinfo
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/@angular%2fcli failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-06-13T10_19_13_600Z-debug.log
The command '/bin/sh -c npm install -g @angular/cli' returned a non-zero code: 1
ERROR: Service 'web' failed to build : Build failed
到目前为止,我已经尝试过:
当我手动构建每个docker文件时,我会得到相同的错误,直到我使用了--network=host
。这意味着,当我用docker build --network=host
构建映像时,它工作得很好。因此,我尝试将network_mode= "host"
添加到我的坞-撰写文件中,但它并没有解决这个问题。
看在上帝的份上,在把这个问题标记为重复的之前读了这篇文章
ping registry.npmjs.org
时,连接工作正常。docker-compose up
,它会抛出与这里完全相同的错误。npm cache clean --force
和npm config set registry https://registry.npmjs.org/
。这篇文章不仅不能解决这个问题,而且也不能很好地解释为什么这个解决方案是proposed.上被允许的
发布于 2021-07-07 19:29:46
如果使用network_mode和主机值,则不能将其与端口映射混合起来:https://docs.docker.com/compose/compose-file/compose-file-v3/#ports
然后,或者将network_mode更改为桥接,或者删除每个服务的端口映射。
发布于 2022-04-09 18:11:28
将以下变量添加到mac中的.zshrc文件中
export NODE_OPTIONS=--openssl-legacy-provider
https://stackoverflow.com/questions/67957292
复制相似问题