當我的 Docker 容器啟動時,我需要運行這一行:
cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
這兩個檔案只有在安裝了一些包后才存在于 Docker 容器中。
在 Dockerfile 中,我嘗試過:
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 .
uj5u.com熱心網友回復:
可以指定多個資源,但檔案和目錄的路徑將被解釋為相對于構建背景關系的源
嘗試先將檔案復制到Dockerfile所在的本地目錄
然后
COPY libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451479.html
標籤:linux 码头工人 dockerfile
