【问题标题】:Build docker image, through docker-compose, using locally running verdaccio通过 docker-compose 构建 docker 镜像,使用本地运行的 verdaccio
【发布时间】:2020-02-14 11:50:40
【问题描述】:

我在本地(通过 docker)运行 verdaccio 来发布私有 npm 包。我正在使用 Dockerfile 构建我的一个包,其中包含:

RUN npm ci

在里面。我实际上是用docker-compose 构建的。我有一个.env 文件来设置这些参数:

        - NPM_CONFIG_REGISTRY
        - NPM_CONFIG_USERNAME
        - NPM_CONFIG_EMAIL
        - NPM_CONFIG_PASSWORD

它正在成功尝试从我的本地注册表中获取包,但它无法连接。

所以我的问题是 - 我如何运行 docker-compose build myservice 并让 myservice 使用本地运行的 verdaccio 实例在 docker 构建期间从其中提取包?

编辑:我在 mac 主机上运行。

【问题讨论】:

    标签: docker docker-compose verdaccio


    【解决方案1】:

    通过在servicebuild 下添加一个network: host 条目似乎可以工作:

        build:
          context: ./packages/server
          target: dev
          network: host
    

    注意:在接受它作为答案之前给一些时间来测试它(以防万一我已经尝试了许多其他方法来让它工作)。

    【讨论】:

    • 这很少需要,并且禁用了 Docker 的核心部分之一。通常是在某处解决硬编码的localhost。在 Docker for Mac 的上下文中,神奇的主机名 host.docker.internal 将指代物理主机系统(并且主机网络通常无法按您预期的那样工作)。
    • @DavidMaze 谢谢!我能够在构建配置中删除 network: host 并在我的 .env 文件中使用魔术主机名:NPM_CONFIG_REGISTRY=http://host.docker.internal:4873/。该构建像以前一样工作。您可以将此添加为答案吗?您是否知道某处对其他主机操作系统的“神奇”主机名的引用?或者host.docker.internal 会在其他地方工作吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2020-10-06
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多