首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-compose - Containers在构建过程中没有互联网

docker-compose - Containers在构建过程中没有互联网
EN

Stack Overflow用户
提问于 2020-09-20 03:56:49
回答 2查看 240关注 0票数 0

我已经在堆栈和超级用户上检查了很多类似的问题,但找不到我的确切案例,所以我决定问这个问题。

我的问题是,我的容器不能只在构建过程中访问互联网。这意味着如果我从do文件中注释掉任何需要互联网的命令,并将执行命令设置为tail -f /dev/null,然后转到容器外壳,那么我确实可以访问互联网。

下面是我失败的设置:

我的docker-compose.yml:

代码语言:javascript
复制
version: '3.7'
services:
  admin-panel:
    network_mode: host
    container_name: react-admin
    build:
      context: Admin-Panel
    volumes:
      - ./Admin-Panel:/app
      - /app/node_modules
    ports:
      - '5000:5000'
    stdin_open: true
    tty: true

和Dockerfile:

代码语言:javascript
复制
FROM node:13.12.0-alpine
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json yarn.lock ./
RUN yarn --pure-lockfile --silent
COPY . ./
RUN yarn build
CMD ["serve" "-s" "build"]

这将失败,并显示以下输出:

代码语言:javascript
复制
docker-compose up --build
Building admin-panel
Step 1/9 : FROM node:13.12.0-alpine
 ---> 483343d6c5f5
Step 2/9 : WORKDIR /app
 ---> Using cache
 ---> 5cd6ae583081
Step 3/9 : ENV PATH /app/node_modules/.bin:$PATH
 ---> Using cache
 ---> 77db61e579e4
Step 4/9 : COPY package.json yarn.lock ./
 ---> Using cache
 ---> 52e5361fb0fa
Step 5/9 : RUN yarn --pure-lockfile --silent
 ---> Running in 803c8d85c8e5
error An unexpected error occurred: "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz: getaddrinfo EAI_AGAIN registry.yarnpkg.com".

这表明没有互联网接入。

但是,当我注释掉yarn命令,并在构建完成后手动执行它们时,我在容器的shell中,一切都正常。

工作设置:

与此Dockerfile相同的docker-compose:

代码语言:javascript
复制
FROM node:13.12.0-alpine
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json yarn.lock ./
# RUN yarn --pure-lockfile --silent
COPY . ./
# RUN yarn build
# CMD ["serve" "-s" "build"]
CMD ["tail", "-f", "/dev/null"]

并手动安装依赖项并从容器shell运行应用程序。

你知道为什么这种没有互联网的事情只发生在构建过程中吗?

附言:如果我从我的docker-compose.yml中删除network_mode: host,我将不会有互联网,即使在构建之后。

EN

回答 2

Stack Overflow用户

发布于 2020-09-21 02:46:31

通过将network: host添加到build部分,我的问题得到了解决。

仍然不知道为什么我的docker网桥网络不能工作。

代码语言:javascript
复制
version: '3.7'
services:
  admin-panel:
    network_mode: host
    container_name: react-admin
    build:
      context: Admin-Panel
      # the line below fixed it
      network: host
    volumes:
      - ./Admin-Panel:/app
      - /app/node_modules
    ports:
      - '5000:5000'
    stdin_open: true
    tty: true
票数 1
EN

Stack Overflow用户

发布于 2020-09-20 14:53:23

如果只有network_mode主机能为你工作,那就意味着docker的网桥网络“卡住”了。重新启动docker守护程序应该可以解决此问题。

在构建时,docker会创建短暂的容器/镜像。通常情况下,它们会在成功构建时被移除,但它们也可能会“卡住”。尝试使用"--no-cache“标志构建您的镜像。从您发布的输出来看,构建中以前的所有层都是缓存层。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63972884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档