在这个例子中,我将 wait-for-it.sh 复制到/app/wait-for-it.sh
但是,我不想将 wait-for-it.sh 保存在我的本地目录中。我想使用 curl 下载它,然后复制到/app/wait-for-it.sh
FROM prismagraphql/prisma:1.34.8
COPY ./wait-for-it.sh /app/wait-for-it.sh
RUN chmod +x /app/wait-for-it.sh
ENTRYPOINT ["/bin/sh","-c","/app/wait-for-it.sh mysql:3306 --timeout=0 -- /app/start.sh"]
我试过的是这个,但是我怎样才能得到
wait-for-it.sh
使用 curl 命令下载文件后:FROM prismagraphql/prisma:1.34.8
FROM node:11-slim
RUN apt-get update && apt-get install -yq build-essential dumb-init
RUN curl -LJO https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh
COPY wait-for-it.sh /app/wait-for-it.sh
RUN chmod +x /wait-for-it.sh
ENTRYPOINT ["/bin/sh","-c","/wait-for-it.sh mysql:3306 --timeout=0 -- /app/start.sh"]
最佳答案
根据您在下面的评论,您可以试试这个:
FROM prismagraphql/prisma:1.34.8
RUN apk update && apk add build-base dumb-init curl
RUN curl -LJO https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh
RUN cp wait-for-it.sh /app/
RUN chmod +x /wait-for-it.sh
ENTRYPOINT ["/bin/sh","-c","/wait-for-it.sh mysql:3306 --timeout=0 -- /app/start.sh"]
注意:您需要使用
cp
命令,因为您想将脚本从一个位置复制到容器文件系统中的另一个位置。您还可以确认
/app
中是否存在您的脚本和其他文件/目录。运行以下命令创建文件夹:$ docker run --rm --entrypoint ls waitforit -l /app/
total 36
drwxr-xr-x 1 root root 4096 Aug 29 2019 bin
drwxr-xr-x 2 root root 16384 Aug 29 2019 lib
-rwxr-xr-x 1 root root 462 Aug 29 2019 prerun_hook.sh
-rwxr-xr-x 1 root root 61 Aug 29 2019 start.sh
-rw-r--r-- 1 root root 5224 Apr 22 13:46 wait-for-it.sh
关于Dockerfile:如何使用 curl 下载文件并复制到容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61364113/