问题标签 [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 投票
2 回答
886 浏览

docker - Docker多重继承entry_point执行

我有以下内容Dockerfile

在第一个和第二个上面有一个ENTRYPOINT. 众所周知,只有一个ENTRYPOINT会被处决。是否存在运行所有父母的方式ENTRYPOINT

是否正确,我可以使用这样Docker-Compose的任务?

0 投票
0 回答
225 浏览

mysql - 如何在不阻塞数据库的情况下在 mysql docker 容器中加载大表?

我使用默认的mysql docker 容器。我有一个 500Mb(压缩的 sql.gz 文件)表备份,需要很长时间才能加载。我目前的选择是在容器启动后在后台加载这个大表。我试图将大表 sql.gz 文件放入,docker-entrypoint-initdb.d但在容器启动后我无法访问数据库。我等了 20 多分钟,仍然无法访问该容器中的数据库。如果我从中删除那个大的 sql.gz 文件docker-entrypoint-initdb.d,我可以在容器启动后立即访问数据库,没问题。

  • 在 MySQL docker 容器中加载大表的推荐方法是什么?
0 投票
1 回答
57 浏览

docker - 为什么当被 docker run 覆盖时,docker 仍在运行 CMD?

我有一个 Dockerfile,CMD最后一行 是以下内容

在启动期间针对 docker 映像执行的部分脚本如下

但是,这仍然会执行CMD我的 Dockerfile 中的行。

我发现我可以通过如下更改脚本中的行来改变这种行为。

但是,我认为这没有必要。docker在命令中执行CMDwhen覆盖是否正常docker runCMD我认为这应该是使用and之间的区别之一,您可以在不使用标志的情况下ENTRYPOINT轻松覆盖。CMD--entrypoint

如果它很重要,这是使用 docker 版本17.03.0-ce

0 投票
1 回答
280 浏览

linux - 为什么一个 linux 命令在 conatiner 中工作,但在 entrpoint.sh 中没有

我正在使用 ubuntu 16.04 OS 作为 VM。

在创建容器时,我在 entrpoint.sh 中有一些命令无法正常工作或行为不符合预期,但是当我在容器内手动运行时,相同的命令正在工作,准确地说,下面是我的简单 linux cp命令,它从源代码递归复制到目的地并解压缩命令。

在我的 entrypoint.sh 中,我有三个命令:

最后两个命令在容器启动时不起作用,当我说它不起作用时,这意味着它没有给出任何错误,但没有按预期将源内容复制到目的地,也没有解压缩 .zip 文件

注意:但是当我在容器内手动运行时,相同的命令会按预期工作。

入口点.sh

0 投票
3 回答
3198 浏览

postgresql - Openshift中的PostgreSQL不会执行入口点并且无法启动数据库

我们有一个应该在 Openshift 集群中运行的只读 Postgresql 数据库。我们使用 RHEL 作为底层操作系统。我们的 Dockerfile 将安装 postgres 软件,创建数据库实例,将数据加载到其中,然后关闭数据库并保存图像。我们只使用 bash 和 sql 脚本,并使用 flyway 部署数据库。

启动容器时,入口点脚本将简单地使用"pg_ctl"命令启动数据库实例,然后执行无限循环以保持容器运行。

Dockerfile 的最后一个命令是 USER 26,其中 26 是 postgres 用户的 id。入口点脚本可以以 postgres 用户或sudo user.

一切都在 Docker 中运行良好。

在 Openshift 中,容器由属于 root 组的不同用户启动,但不是 root 用户也不是用户 26。实际上 Openshift 忽略了 Dockerfile 中的 USER 26 子句。启动容器的用户(我们称之为 containeruser)无论如何都没有启动 postgres 实例的权限,因此在运行入口点时,它将获得对 postgresql 数据文件夹的权限被拒绝。我尝试了不同的选项,将 containeruser 用户添加到 wheel 组并修改 sudoers 文件以允许它使用 sudo 并以 postgres 用户身份启动入口点,但没有成功。所以我已经准备好我的数据库映像,但无法在 Openshift 中启动它。在 openshift 配置方面,我们不允许进行更改,例如允许使用 sudo,或者以 root 或 postgres 用户身份启动容器。

对这个问题有任何想法或帮助吗?我不是 Openshift 专家。

谢谢!

最好的问候, rimetnac

0 投票
1 回答
16576 浏览

powershell - 如何将 PowerShell 脚本指定为 Docker 容器入口点?

我需要将 [Windows] Docker 容器作为可执行文件运行,运行相当复杂的 PowerShell 脚本(调用 Java 和 .NET 应用程序)并退出。Docker 文档建议ENTRYPOINT用于此目的。所以我继续创建了一个包含以下内容的 Dockerfile:

run.ps1(此问题的超级简化)的内容:

然后,我运行了以下命令:

容器成功运行,显示内容C:\后跟消息 - looks like everything is good!

根据我的观察,我有几个问题:

  1. 基于 Windows 的 Docker 容器的默认 shell 是什么?有没有办法将它设置为 PowerShell,所以我不必将“powershell”指定为ENTRYPOINTJSON 数组的第一个元素?我应该使用SHELLDockerfile 中的命令吗?
  2. 创建和运行容器大约需要 3-4 秒,这在某种程度上可以理解,但在 PS1 脚本完成后,容器退出并返回命令提示符需要将近 10 秒的时间。造成这种延迟的原因可能是什么?
0 投票
1 回答
198 浏览

docker - 在任何来源中都找不到 ast-2.3.0

Dockerfile 已弃用。在这里,我正在安装 bundle install 并创建一个新目录 /bundle 来安装 bundle。在将此映像作为容器运行时,我将当前目录挂载到 /code,即 WORKDIR,以便所有 rakefile、Gemfile、GEMFile.lock 都可以在其中使用。但是每次我尝试启动容器时,ENTRYPOINT 命令“bundle exec rake syntax”都会失败。 在此处输入图像描述

我尝试删除 Gemfile.lock 没有运气。当我在运行时覆盖入口点时,我可以登录到容器并手动运行入口点命令,它是 bundle exec rake 语法。它仍然给我同样的错误。我添加了 /bundle 的路径。但是,如果我在登录容器后再次手动执行捆绑安装,则此命令将成功运行。

任何帮助,将不胜感激!

0 投票
1 回答
192 浏览

docker - 如何在 gunicorn docker 中添加动态端口号?

我试图在运行 docker 映像时提供动态端口、线程和工作人员,但出现错误

在 docker 文件中,我使用的是 ENTRYPOINT

谁能建议我为什么会收到此错误?

0 投票
2 回答
13954 浏览

docker - 将 ARG 传递给 ENTRYPOINT

假设我在 Dockerfile 中有这个:

我在哪里构建上述内容:

有没有办法做类似的事情:

我猜这个论点也可以在阶段docker run而不是在docker build阶段传递?

0 投票
1 回答
39 浏览

docker - 如何将 CMD 或 ENTRYPOINT 与使用 ENTRYPOINT 的基础图像一起使用

我正在使用ENTRYPOINT用于执行其进程的基本映像 ibmcom/mq: ENTRYPOINT ["mq.sh"] 如果在我Dockerfile使用CMD的父映像工作正常,但我的 CMD 似乎没有被执行。如果在我Dockerfile使用ENTRYPOINT我的命令正在运行但父ENTRYPOINT级似乎没有运行。

我在这里想念什么?