1

我正在尝试构建一个将在离线系统上使用的 npm 存储库。我的想法是构建一个现成的 docker 容器,它已经包含给定项目所需的所有包 - 下载包将基于 package.json 文件。

为了实现我的想法,我需要在一个容器上运行服务器 verdaccio,然后另一个容器将运行 npm install 命令,这将生成带有准备好的 npm 包的适当文件。

但是,我无法应付等待第一个容器的启动。到目前为止,我已尝试使用 wait-for.sh 和 wait-for.sh 脚本(https://docs.docker.com/compose/startup-order/),但它们无法连接到给定的地址.

PS 我正在为 Windows 使用 Docker

码头工人-compose.yml

version: '3.1'
services:
  listen:
    build: listen
    image: listen-img
    container_name: listen
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - "4873:4873"
  download:
    build: download
    image: download-img
    container_name: download
    depends_on:
      - listen
networks:
  node-network:
    driver: bridge

服务器 dockerfile

FROM verdaccio/verdaccio:4

'npm install tr​​igger' 泊坞窗文件

FROM node:15.3.0-alpine3.10
WORKDIR /usr/src/cached-npm
COPY package.json .
COPY wait-for.sh .
COPY /config/htpasswd /verdaccio/conf/htpasswd
USER root
RUN npm set registry http://host.docker.internal:4873
RUN chmod +x /usr/src/cached-npm/wait-for.sh
RUN /usr/src/cached-npm/wait-for.sh host.docker.internal:4873 -- echo "Listen is up"
RUN npm install

我的解决方案中是否缺少共享端口,或者是否有其他问题导致我的方法失败?

4

1 回答 1

1

事实证明,问题在于混淆了两个过程——构建和启动适当的容器。到目前为止,在我的解决方案中,我想同时构建两个容器,而其中一个需要一个已经在运行的第一个容器实例。

于 2020-12-03T19:02:41.650 回答