如果已使用 ENTRYPOINT,如何将 curl(或类似软件)与 "docker run" 一起使用?

How to use curl (or similar software) with "docker run" if ENTRYPOINT already used?

我想用 Tor/aiohttp 服务器创建 docker 图像,用作 HTTP 请求的代理(主要是 curl)。我已经准备好工作 Docker 图像(我可以使用外部 curl -x ),语法的主要问题。

我需要什么:我需要像docker run test_image curl api.ipify.org一样使用这张图片。主要问题 - 我不明白如何正确配置 ENTRYPOINT/CMD。我使用 supervisor 激活服务 (tor/aiohttp),所以我的 Docker 图片的最后一行是:

ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

问题:如何配置Docker图片(使用ENTRYPOINT/CMD),这样图片在激活后会运行我的curl请求服务?

对于当前的 exec 入口点(或 shell 形式),它会忽略 curl。如果我使用 cmd 而不是 entrypoint,curl 可以工作,但是图像会忽略 cmd,所以服务不会被激活。

所以需要关于 Docker logic/syntax 的任何建议,这样我才能让它发挥作用。

您可以 运行 ENTRYPOINT 作为 shell 脚本而不是命令:

https://success.docker.com/article/use-a-script-to-initialize-stateful-container-data

docker-entrpoint.sh

#!/bin/bash
set -e

/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
curl api.ipify.org

Docker 文件

FROM debian:stretch
...
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]