Dockerfile:如何使用 curl 下载文件并复制到容器中

标签 docker docker-compose dockerfile prisma

在这个例子中,我将 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/

相关文章:

php - Docker、PHP PDO 和单个 MySQL 容器(无法通过容器名称连接)

node.js - 在 docker 容器中安装 Mongoose

windows - 在Windows上启动Docker构建时的问题

docker - 我的 docker 启动了Zookeeper,但随后它自动存在

linux - 在 Dockerfile 中使用来自 docker-compose build --build-arg 的参数

mongodb - 如何在 mongodb 容器中禁用日志?

postgresql - 用户 "postgres"的密码不匹配

docker - 使用环境变量在Dockerfile中设置容器版本

javascript - 无法对 NodeApp 进行 dockerize

docker - docker 容器退出状态 255 是什么意思?