【问题标题】:My sh script always run after entrypoint DOCKERFILE我的 sh 脚本总是在入口点 DOCKERFILE 之后运行
【发布时间】:2021-07-12 22:48:21
【问题描述】:

我尝试设置一个 wordpress 解决方案(自己安装而不使用官方图像)。我有一个带有 apache、php 和 mariadb-client 的容器(从另一个容器询问 mariadb-server)

我有另一个容器,上面有 mariadb。

我使用 wp-cli 来配置 wordpress 网站,但是当我构建我的 docker 映像时,我无法执行命令(在 sh 文件中)

wp core config --allow-root --dbname=$MYSQL_DATABASE --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD --dbhost=172.20.0.2 --dbprefix=wp --path=/var/www/html/wordpress

因为我的 mariadb 容器没有启动。

所以我尝试使用入口点参数运行此脚本,当我执行docker-compose up 时,我的脚本被播放并且我收到消息:

apache-php_SDV | Success: Generated 'wp-config.php' file.

apache-php_SDV | Error: The 'wp-config.php' file already exists.

我的脚本是每秒播放一次,之前试过用CMD还是不行,好像CMD没有运行

如果我想将 CMD 放在 ENTRYPOINT 之后,我会得到相同的结果,我只能在两个容器都启动时运行我的脚本。

我也尝试在我的docker-compose.yml 上使用command,但没有帮助。有人有解决办法吗?

【问题讨论】:

    标签: mysql wordpress docker-compose dockerfile mariadb


    【解决方案1】:

    我自己解决,这可能很有用,我杀死了运行我的第一个脚本的 PID 1,我运行了另一个启动 apache 并将 PID 1 带到容器的脚本,有代码:

    #!/bin/bash
    set -o errexit
    
    case "$1" in
        sh|bash)
            set -- "$@"
        ;;
        *)
            set -- apache2ctl -D FOREGROUND "$@"
        ;;
    esac
    
    exec "$@" ```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多