问题标签 [docker-entrypoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1990 浏览

docker - Docker 运行命令,只需一行命令即可实现几步

我正在尝试运行 docker 命令以通过一行命令实现以下​​步骤。

A) 拉取 docker 映像,
B) 然后启动容器,
C) 将目录从主机卷挂载到启动的容器,
D) 然后在容器内发出扫描命令以捕获报告。

我可以使用此命令实现步骤 a、b 和 c。

但是对于最后一步 D,即在容器内运行扫描并捕获报告,我无法将该命令添加到上述命令并使其正常工作。

下面的这条命令独立工作,但无法附加到上面的行并使其工作。

当给出以下命令时,容器刚刚启动并退出

还做了一些基本搜索并尝试添加一个入口点,如下所示

但这也没有用。刚刚报错docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH": unknown.

期望实现使用单个 docker 命令执行的所有上述 4 个步骤,并且我得到填充有结果的“报告”。

0 投票
6 回答
23643 浏览

java - 如何在 docker run 命令中将 Java 选项/变量传递给 Springboot 应用程序

我有一个 Spring Boot 应用程序,它使用配置文件在不同的环境中进行配置。我想将此配置文件信息作为参数传递给我的docker run命令。我该怎么做呢?

这是我的码头文件

我尝试了以下方法,但没有一个有效

docker run -p 8000:80 demo-app -Dspring.profiles.active=dockerdev

docker run -p 8000:80 demo-app --rm -e JAVA_OPTS='-Dspring.profiles.active=dockerdev'

请帮忙。

澄清:我正在使用多个配置文件。因此,我不希望在应用程序或 docker 文件中提及活动配置文件。相反,我想使用相同的应用程序和 docker 文件并在不同的环境中运行它,并传递要在 docker run 命令中使用的活动配置文件。如果上述任何内容没有澄清这一点,我们深表歉意。

0 投票
2 回答
378 浏览

linux - 如何使用传递给 ENTRYPOINT 的服务脚本启动单个进程

我将服务脚本传递给 ENTRYPOINT。服务已启动但已退出。我必须使用 ENTRYPOINT 或 CMD 中的服务脚本为每个容器启动一个进程。这样,我可以使用服务脚本重新加载容器内的配置。我也尝试使用 CMD 语句,但它启动了服务,但容器立即存在。

/etc/init.d/elasticsearch 脚本具有以下代码以将服务作为守护程序启动。

是否无法使用启动脚本启动服务并保持容器运行?

用于创建和运行容器的命令。

0 投票
1 回答
230 浏览

docker - 如何从撰写入口点拆分 curl 和 npm 命令

我在 docker-compose 入口点中使用了两个命令:

当我单独使用它们时,它们正在工作,但是当我使用提供的解决方案时,它看起来 curl catch npm 命令并且无法以正确的方式执行。那么如何拆分它们呢?有没有不使用 bash 脚本的解决方案,比如

0 投票
1 回答
4387 浏览

java - 在入口点访问 dockerfile ENV 变量

我有一个 dockerfile,它声明了一些稍后在入口点中使用的环境变量,但入口点从不获取这些变量的值。我尝试了 shell 形式,但看起来它什么也没做。这是我的示例 dockerfile :-

我的 entrypoint.sh 非常简单,并使用这些 ENV 变量:-

我应该如何让我的 ENTRYPOINT 能够访问之前在 Dockerfile 中声明的那些 ENV 变量,以便它能够为传入的参数分配适当的值。浏览了互联网上的几篇文章和资料,并尝试了很多方法来获得这个工作,但似乎没有工作一次。

0 投票
2 回答
2000 浏览

bash - 无法从脚本中获取任何 Docker 入口点而无需连续重启

我无法理解或看到使用 bash 脚本作为 Docker 容器的入口点的某些工作版本。我已经尝试了很多东西了大约 5 个小时。

即使来自这个官方 Docker 博客,使用 bash 脚本作为入口点仍然不起作用。

Dockerfile

码头入口点.sh

构建.sh

运行.sh

尽管付出了很多努力,但我似乎无法使用入口点作为 bash 脚本来获取 Dockerfile,该脚本不会不断重启并反复失败。

我的理解是exec "$@"假设保持容器表单立即退出,但我不确定这是否依赖于脚本中的其他进程失败。

我试过使用一个docker-entrypoint.sh看起来像这样的脚本:

而且由于这也失败了,我认为这排除了脚本内部出现的其他问题是导致失败的原因。

同样令人沮丧的是,没有来自docker service logs test或的日志docker logs [container_id],而且我似乎在docker inspect [container_id].

我很难理解每个人对exec "$@". 我不想诉诸于使用类似的东西tail -f /dev/null或使用命令 at docker run。我希望有一些一致、可靠的方式,docker-entrypoint.sh脚本可以可靠地用于启动服务,我也可以使用这些服务来运行docker run其他服务,但即使在 Docker 的官方博客和这里的无数问题以及来自其他站点的博客上,我似乎无法找到一个可以工作的例子。

我真的很感激能深入了解我在这里所缺少的东西。

0 投票
3 回答
13807 浏览

docker - Docker 入口点权限被拒绝

我目前正在尝试处理对 kubernetes 集群的部署。部署不断失败并响应

我试图更改文件的权限,这似乎成功了,就好像我 ls -l 我得到 -rwxr-xr-x 作为文件的权限一样。

我曾尝试将 chmod 命令放在 dockerfile 本身以及在构建和上传图像之前,但似乎都没有任何区别。任何想法为什么我仍然收到错误?

dockerfile 下面

0 投票
1 回答
1278 浏览

linux - 使用 dockerfile 对非 root 用户的 Docker 挂载卷目录权限

我有一个带有入口点的 dockerfile,该入口点在 shell 进程中启动了一个 java 应用程序 jar。我在入口点之前在 dockerfile 中设置了 USER nobody,以确保入口点 shell 由 none 用户而不是 root 执行。AWS ECS 上容器的任务定义负责处理卷和挂载参数。因此,理想情况下,在容器运行时主机上的 /var/log/applogs 以相同的路径安装到容器上。但是发生的情况是,由于用户上下文从 root 切换到了 nobody,因此运行容器(执行入口点)的任何人都没有对容器上 /var/log/applogs/ 目录的写权限。因此,应用程序无法在容器上创建日志文件。我看到的是主机 ec2 /var/log/applogs 安装在由 nobody 用户运行的容器上很好,但是由于 nobody 用户在容器上的此路径上缺少写权限,因此它无法在此处写入应用程序日志. 在 dockerfile 或其他东西上解决这个问题的正确方法是什么?

0 投票
2 回答
2000 浏览

docker - 如何在 kubernetes 中将 `args` 作为`command` 运行

我有一个要在 kubernetes 作业中运行的 python 脚本。我已经使用 aconfigMap将其上传到位于例如dir/script.py.

容器使用args["load"].

我尝试在Job清单中使用 postStart 生命周期,但它似乎没有运行。

以下是清单的片段

如何tls_generator.pyargs["load"].

dockerFile 部分看起来像

0 投票
0 回答
991 浏览

docker - portainer.io 的入口点不像在 Docker 映像中那样工作

我有一个带有以下入口点的 docker Image。

现在我想使用 portainer.io 来管理 docker swarm。我在要设置入口点的位置(而不是在图像中)创建了一个新服务。所以我删除了dockerfile中的入口点,并将其添加到“Image”>“Entrypoint”中。我补充说:

但是,服务的容器无法启动。没有入口点,容器就会启动。这是 Dockerfile 的示例,其中设置了入口点。

如何设置入口点?当我将它设置为搬运工时,它稍后会显示在 CDM 部分下。