• 【Docker】Dockerfile 最佳实践-ENTRYPOINT


    参考教程:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

    环境

    1. virtual box 6.1
    2. centos 7.8
    3. docker 19.03

    ENTRYPOINT

    The best use for ENTRYPOINT is to set the image’s main command, allowing that image to be run as though it was that command (and then use CMD as the default flags).

    ENTRYPOINT 的最佳用途是设置镜像的主命令,使该镜像像该命令一样运行(然后使用 CMD 作为默认标志)。

    Let’s start with an example of an image for the command line tool s3cmd:

    让我们从命令行工具 s3cmd 的镜像示例开始:

    ENTRYPOINT ["s3cmd"]
    CMD ["--help"]
    

    Now the image can be run like this to show the command’s help:

    现在可以像这样运行镜像以显示命令的帮助:

    $ docker run s3cmd
    

    Or using the right parameters to execute a command:

    或使用正确的参数执行命令:

    $ docker run s3cmd ls s3://mybucket
    

    This is useful because the image name can double as a reference to the binary as shown in the command above.

    这很有用,因为镜像名称可以用作对二进制文件的引用,如上面的命令所示。

    The ENTRYPOINT instruction can also be used in combination with a helper script, allowing it to function in a similar way to the command above, even when starting the tool may require more than one step.

    ENTRYPOINT 指令也可以与辅助脚本结合使用,即使启动该工具可能需要一个以上的步骤,也可以使其与上述命令类似地工作。

    For example, the Postgres Official Image uses the following script as its ENTRYPOINT:

    例如,Postgres Official Image 使用以下脚本作为其 ENTRYPOINT

    #!/bin/bash
    set -e
    
    if [ "$1" = 'postgres' ]; then
        chown -R postgres "$PGDATA"
    
        if [ -z "$(ls -A "$PGDATA")" ]; then
            gosu postgres initdb
        fi
    
        exec gosu postgres "$@"
    fi
    
    exec "$@"
    

    Configure app as PID 1
    将应用程序配置为PID 1

    This script uses the exec Bash command so that the final running application becomes the container’s PID 1. This allows the application to receive any Unix signals sent to the container. For more, see the ENTRYPOINT reference.
    该脚本使用 exec Bash 命令,以便最终运行的应用程序成为容器的 PID1。这使该应用程序可以接收发送到该容器的所有 Unix 信号。有关更多信息,请参见 ENTRYPOINT 参考。

    The helper script is copied into the container and run via ENTRYPOINT on container start:

    将帮助程序脚本复制到容器中,并在容器启动时通过 ENTRYPOINT 运行:

    COPY ./docker-entrypoint.sh /
    ENTRYPOINT ["/docker-entrypoint.sh"]
    CMD ["postgres"]
    

    This script allows the user to interact with Postgres in several ways.

    该脚本允许用户以多种方式与 Postgres 进行交互。

    It can simply start Postgres:

    它可以简单地启动 Postgres:

    $ docker run postgres
    

    Or, it can be used to run Postgres and pass parameters to the server:

    或者,它可以用于运行 Postgres 并将参数传递给服务器:

    $ docker run postgres postgres --help
    

    Lastly, it could also be used to start a totally different tool, such as Bash:
    最后,它也可以用于启动一个完全不同的工具,例如 Bash:

    $ docker run --rm -it postgres bash
    

    总结

    介绍了 Dockerfile 的 ENTRYPOINT 指令的最佳实践。

  • 相关阅读:
    sublime text添加snippet
    python __globals__, __file__
    Zen of Python
    Python的魔法函数之
    tornado session
    sqlalchemy学习
    自控力
    无需编译、快速生成 Vue 风格的文档网站
    python描述符理解
    python property理解
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/14218220.html
Copyright © 2020-2023  润新知