传递给应用的配置参数

比如

docker run -d -p 8002:8002 --name myurls myurls-custom:latest -domain 'myurls.3dot141.top' -port 8002 -conn 'apn1-thorough-feline-34121.upstash.io:34121' -passwd 'd84f3d8e37f04072887089d6d7e9888e' -ttl 90

ENTRYPOINT 是 Dockerfile 中的一个指令,用于指定容器启动时要执行的命令或程序。

在您的情况下,您正在运行一个容器,并希望在容器启动时执行特定的命令。您可以使用 ENTRYPOINT 指令来定义这个命令。

以下是一个示例 Dockerfile,展示了如何使用 ENTRYPOINT 指令来定义容器启动时要执行的命令:

FROM myurls-custom:latest

# 设置环境变量
ENV DOMAIN myurls.3dot141.top
ENV PORT 8002
ENV CONN apn1-thorough-feline-34121.upstash.io:34121
ENV PASSWD d84f3d8e37f04072887089d6d7e9888e
ENV TTL 90

# 定义 ENTRYPOINT
ENTRYPOINT ["myurls-custom", "-domain", "$DOMAIN", "-port", "$PORT", "-conn", "$CONN", "-passwd", "$PASSWD", "-ttl", "$TTL"]

在这个示例中,myurls-custom 是容器中的可执行文件,您需要根据实际情况替换为您的可执行文件。

然后,使用 docker build 命令来构建镜像,并使用 docker run 命令来运行容器。在运行容器时,不需要显式指定命令和参数,因为它们已经在 ENTRYPOINT 中定义。

docker build -t myurls-image .
docker run -d -p 8002:8002 --name myurls myurls-image

这样,当容器启动时,它将自动执行 myurls-custom 命令,并使用您在 Dockerfile 中定义的环境变量作为参数。

设置环境变量的方式

放在 Dockerfile 中的环境变量,相当于提供了默认配置。

ENV NAME=VALUE

但每个容器启动时可以通过 -e 覆盖。
而使用docker run -e设置的变量只对当前容器生效,不会影响镜像。