当我的Docker容器启动时,我需要运行以下命令:

cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2

这两个文件只有在安装了一些软件包后才存在于Docker容器中.

在Dockerfile中,我try 过:

RUN cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
COPY /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
ENTRYPOINT ["cp","/lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2"]

还创建了一个bash脚本,其中包括这一行.我知道脚本已经运行,因为它所做的其他更改已经存在,但文件没有被复制.

#!/bin/sh

apk add build-base
apk add libc6-compat

cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2

然后和我一起跑

RUN ./my_bash_script.sh

但是,当我在Docker容器中使用命令行并手动运行该行时,它就可以工作了.

Dockerfile命令为什么不复制此文件?

编辑:我的完整Dockerfile

FROM golang:alpine
ENV APP_NAME hello-world
ADD env_setup.sh .
RUN chmod +x env_setup.sh
RUN ./env_setup.sh
WORKDIR /home/helloworld
ADD vendor/ ./vendor/
COPY main.go .
COPY go.mod .

推荐答案

可以指定多个资源,但文件和目录的路径将被解释为相对于构建上下文的源

try 先将文件复制到Dockerfile所在的本地目录

然后

COPY libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2

Linux相关问答推荐

如何将netcdf文件列表中的特定变量添加到不同的文件中?

在64位Linux Mint 21.2 Mate上呈现nvim中的文本对象时出现问题

如何检测文件系统是否支持权限?

如何正确Forking 并完成进程以避免 EAGAIN 错误

如何在 gcc 搜索路径上防止多个版本的 Boost?

erlang 格式的 utf8 变为 \x(反斜杠 x)ascii 编码

使用 bash 命令将文件从子文件夹复制到另一个

如何在bash中用另一个整数变量增加一个整数变量?

树莓派拒绝连接到瓶子服务器

如何使用 Bash 将随机数据块写入文件

如何忽略 diff 命令中的一些差异?

如何获取 CPU 使用率

在 cron 作业(job)中执行 PHP 脚本

如何在不重新打印的情况下更新终端中的打印消息

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

使用 cmake 构建错误:找不到 -lpthreads

如何运行时调试共享库?

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

通过 linux x86-64 函数调用保留了哪些寄存器