代码之家  ›  专栏  ›  技术社区  ›  sortas

如果入口点已经使用了,如何将curl(或similar软件)与“docker run”一起使用?

  •  0
  • sortas  · 技术社区  · 7 年前

    我想用 Tor / aiohttp 用作HTTP请求代理的服务器( curl 大多数情况下)。我已经准备好了工作Docker图像(我可以使用外部 curl -x 有了它),语法的主要问题。

    我需要的是: 我需要像这样使用这个图像 docker run test_image curl api.ipify.org . 主要问题-我不明白如何正确配置entrypoint/cmd。我用 supervisor 要激活服务(tor/aiohtp),我的Docker映像的最后一行是:

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

    问题: 如何配置Docker镜像(使用entrypoint/cmd),使镜像在激活服务后运行curl请求?

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

    所以需要关于Docker逻辑/语法的任何建议,所以我可以让它工作。

    1 回复  |  直到 7 年前
        1
  •  2
  •   DevOps Dan    7 年前

    你可以跑 入口点 作为shell脚本而不是命令:

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

    docker-入口点.sh

    #!/bin/bash
    set -e
    
    /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
    curl api.ipify.org
    

    文档文件

    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"]