当我的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 .