问题标签 [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.
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
docker - 多阶段 dockerfile 和 ARG / ENV 变量
我有一个看起来像这样的 dockerfile:
该项目使用数据库容器和后端容器,公开端口 50777 以与 API 交互。
鉴于上面的 dockerfile,构建成功完成,并且应用程序正在容器中运行,但我无法访问后端 API。
现在我明白了在容器运行时使用了ENV,而在构建过程中使用了ARG,那么我无法连接到它的原因可能是什么?
[编辑]
码头工人运行命令:
docker - 在多阶段 Docker 构建中持久化 ENV 变量
上次我检查时,当我这样做时:
那么“echo $foo”是空的——有没有办法在多阶段构建中保持 ENV 变量?
docker - 多阶段 Dockerfile
我找到了 android sdk 的 dockerfile
我连接到泊坞窗图像。Apk 构建工作正常。
但是我的项目需要不同的依赖项。另一个dockerfile内容如下:
它适用于 pyhton 应用程序。
但是,我怎样才能合并这些文件呢?
以下设置不起作用:
我连接泊坞窗图像。Apk 构建失败。错误在这里:
错误:未设置 JAVA_HOME,在您的 PATH 中找不到“java”命令。
linux - 使用第一阶段的文件夹构建 docker 多阶段
我有以下工作正常的 docker 文件,我使用多阶段构建和“跑步者”使用 FROM golang:1.11.4-alpine3.8
现在我想更改跑步者阶段以使用临时图像并尝试如下:
错误是
curl: (23) Failed writing body (0 != 1132)
我需要的是将证书从第一阶段复制到第二阶段(不仅仅是bin),并带有临时图像
php - 使用 Docker 多阶段构建构建映像
目前,我需要构建一个应该包含 jenkins 和 php 7.2 的自定义图像。
我试过这个镜头:
第二个FROM (FROM php:7.2-apache)粉碎了上面的整个。这是正常的 docker 行为。使用Copy
命令COPY --from=jenkins /app/site ./
仍然很模糊,因为不知道要复制粘贴什么。
有什么办法可以解决这个问题吗?
docker - 使用 AWS CLI 进行多阶段 Docker
我正在 Docker 中设置多阶段构建,我需要从远程映像中提取一些数据。在该远程映像中,我看到他们使用以下命令集安装了 AWS CLI,以便将其放入基于 Alpine 的映像中:
副本说还行
此处的 Terraform 运行良好,但 AWS 没有。输出如下所示:
如果我添加 python3,我会得到这个错误:
将所有数据从该特定层中的命令复制到我的新层是否有技巧,或者为了简单起见,我应该自己在我的图像中安装 Python 和 AWS CLI?
谢谢!
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 在第二阶段不起作用
docker - Docker构建后的虚拟缩小
使用多阶段构建,我想在 Dockerfile 末尾缩小图像,如下所示:
alpine 图像很小,理论上只有 /app 的东西会从 ubuntu 图像中复制出来,这是书中最好的技巧,还是有其他方法可以最小化最终图像的大小?
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
我尝试了很多事情
- 在构建阶段更改 ARG 变量行位置
- 从原始 ${CUDA_VERSION} 变量中复制其他 ARG 变量
- 在第一个构建阶段为环境变量制作 .profile。并在第二阶段从第一阶段复制
.profile
文件并使用source
命令应用它 - 使用 ENV 变量(但 ENV 变量在进入其他构建阶段时消失)
示例 dockerfile 和构建 dockerfile 的结果如下
Dockerfile
构建消息
预期的结果是 docker 文件构建成功
但 ARG 变量更改导致以下错误
E: Version '7.4.1.5-1+cuda9.0.176' for 'libcudnn7' was not found