问题标签 [docker-multi-stage-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
178 浏览

docker - npm build 在 ubuntu 下的 docker 中无法正常工作

我有以下 Dockerfile(构建 Vue.js 应用程序):

这在我的 Windows 机器(使用 Docker Toolbox)和 Centos7 机器上运行良好。应用程序构建并运行良好。

但是,当我尝试在带有 Ubuntu 18.04(也尝试过 16.04)的服务器上构建它时,npm run build它似乎无法正常工作。它像往常一样运行并且不会抛出任何错误,但是在构建dist文件夹丢失之后,第二阶段失败了。

在 Windows 和 Centos 桌面上,第二个ls命令显示如下:

但是在 Ubuntudist上没有出现文件夹。

Docker 和 docker-compose 版本是一样的。为什么会发生这种情况以及如何解决?我不知道:(提前谢谢。

UPD:我尝试创建 Centos 服务器,它显示相同的行为(未创建 dist 文件夹),尽管它在 Centos 桌面上运行正常。在这两种情况下,代码都是通过 git clone 从 github 检索到的。所以可能这不是操作系统问题。

UPD2:发生了非常奇怪的事情。我已经在所有可能的地方进行了测试,但未能重现它,所以我的假设是这个问题与我的 VPS 提供商有关。该构建在 Windows 桌面(Docker Toolbox)、Centos7 桌面、VirtualBox 中的 Ubuntu 桌面和 VB 中的 Ubuntu Server 以及来自另一个 VPS 提供商的虚拟机上运行良好。它只是不适用于我最初的 VPS 提供商的 VPS(Ubuntu 和 Centos7)。我要联系他们的支持。

这是要复制的仓库:https ://github.com/DanielTitkov/pagie 可以按原样使用 docker-compose 构建,只有 .env.dist 应重命名为 .env

0 投票
0 回答
57 浏览

docker - 多阶段 dockerfile 和 ARG / ENV 变量

我有一个看起来像这样的 dockerfile:

该项目使用数据库容器和后端容器,公开端口 50777 以与 API 交互。

鉴于上面的 dockerfile,构建成功完成,并且应用程序正在容器中运行,但我无法访问后端 API。

现在我明白了在容器运行时使用了ENV,而在构建过程中使用了ARG,那么我无法连接到它的原因可能是什么?

[编辑]

码头工人运行命令:

0 投票
1 回答
139 浏览

docker - 在多阶段 Docker 构建中持久化 ENV 变量

上次我检查时,当我这样做时:

那么“echo $foo”是空的——有没有办法在多阶段构建中保持 ENV 变量?

0 投票
1 回答
267 浏览

docker - 多阶段 Dockerfile

我找到了 android sdk 的 dockerfile

我连接到泊坞窗图像。Apk 构建工作正常。

但是我的项目需要不同的依赖项。另一个dockerfile内容如下:

它适用于 pyhton 应用程序。

但是,我怎样才能合并这些文件呢?

以下设置不起作用:

我连接泊坞窗图像。Apk 构建失败。错误在这里:

错误:未设置 JAVA_HOME,在您的 PATH 中找不到“java”命令。

0 投票
0 回答
52 浏览

linux - 使用第一阶段的文件夹构建 docker 多阶段

我有以下工作正常的 docker 文件,我使用多阶段构建和“跑步者”使用 FROM golang:1.11.4-alpine3.8

现在我想更改跑步者阶段以使用临时图像并尝试如下:

错误是

curl: (23) Failed writing body (0 != 1132)

我需要的是将证书第一阶段复制到第二阶段(不仅仅是bin),并带有临时图像

0 投票
0 回答
264 浏览

php - 使用 Docker 多阶段构建构建映像

目前,我需要构建一个应该包含 jenkins 和 php 7.2 的自定义图像。

我试过这个镜头:

第二个FROM (FROM php:7.2-apache)粉碎了上面的整个。这是正常的 docker 行为。使用Copy命令COPY --from=jenkins /app/site ./仍然很模糊,因为不知道要复制粘贴什么。

有什么办法可以解决这个问题吗?

0 投票
1 回答
1149 浏览

docker - 使用 AWS CLI 进行多阶段 Docker

我正在 Docker 中设置多阶段构建,我需要从远程映像中提取一些数据。在该远程映像中,我看到他们使用以下命令集安装了 AWS CLI,以便将其放入基于 Alpine 的映像中:

副本说还行

此处的 Terraform 运行良好,但 AWS 没有。输出如下所示:

如果我添加 python3,我会得到这个错误:

将所有数据从该特定层中的命令复制到我的新层是否有技巧,或者为了简单起见,我应该自己在我的图像中安装 Python 和 AWS CLI?

谢谢!

0 投票
0 回答
876 浏览

python - 使用 virtualenv 的多阶段 python docker 映像

我正在尝试使用多阶段来减小我的 python docker 映像文件的大小。这是我的 Dockerfile。

Dockerfile

在第一阶段which python输出/opt/venv/bin/python 当它到达第二阶段which python输出时/usr/local/bin/python

在第一阶段为 virtualenv 定义的符号链接没有被正确复制。谁能帮我弄清楚原因。

我确实尝试在第一阶段使用 python:3.6-jessie AS builder,以便两个阶段都使用 python 图像,但是该图像中缺少许多库,并且一些 python 库需要 c++17 来编译。这是最理想的设置,但 virtualenv 在第二阶段不起作用

0 投票
2 回答
478 浏览

docker - Docker构建后的虚拟缩小

使用多阶段构建,我想在 Dockerfile 末尾缩小图像,如下所示:

alpine 图像很小,理论上只有 /app 的东西会从 ubuntu 图像中复制出来,这是书中最好的技巧,还是有其他方法可以最小化最终图像的大小?

0 投票
1 回答
200 浏览

docker - 多阶段构建中的 FROM 后更改了全局 ARG 变量

在指令中使用全局 ARG 变量,FROM例如RUN

例如我想在第二个构建阶段使用${CUDA_VERSION}ARG 变量FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}libcudnn7=${CUDNN_VERSION}-1+cuda${CUDA_VERSION}

但是全局 ARG 变量${CUDA_VERSION}在通过FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}9.0 到 9.0.176之后发生了更改

在 Ubuntu 18.04、Docker-CE 18.09.04

我尝试了很多事情

  1. 在构建阶段更改 ARG 变量行位置
  2. 从原始 ${CUDA_VERSION} 变量中复制其他 ARG 变量
  3. 在第一个构建阶段为环境变量制作 .profile。并在第二阶段从第一阶段复制.profile文件并使用source命令应用它
  4. 使用 ENV 变量(但 ENV 变量在进入其他构建阶段时消失)

示例 dockerfile 和构建 dockerfile 的结果如下

Dockerfile

构建消息

预期的结果是 docker 文件构建成功

但 ARG 变量更改导致以下错误 E: Version '7.4.1.5-1+cuda9.0.176' for 'libcudnn7' was not found