错误:无效参数:./wait-for-it.sh

Posted

技术标签:

【中文标题】错误:无效参数:./wait-for-it.sh【英文标题】:ERROR: Invalid argument: ./wait-for-it.sh 【发布时间】:2019-01-30 19:49:30 【问题描述】:

我有以下 docker compose 文件:

version: '3'
services:
  my_sql_conatainer_name:
    image: percona:latest
    container_name: my_sql_conatainer_name
    environment:
      mysql_ROOT_PASSWORD: password
      MYSQL_DATABASE: secret
    ports:
    - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
  migration:
    image: boxfuse/flyway:latest
    container_name: flyway_migration
    volumes:
       - ./flyway_scripts/src/main/resources/db/migration:/flyway/sql
    command: ["./wait-for-it.sh", "mysql:3306", "--", "migrate", "-url=jdbc:mysql://my_sql_conatainer_name:3306/secret?useUnicode=true&characterEncoding=utf8&useSSL=false", "-user=root", "-password=password"]

wait-for-it.sh 文件位于撰写文件附近

当我up 我看到以下错误:

flyway_migration |

我做错了什么?

【问题讨论】:

migration: 容器正在运行什么镜像? docker-compose.yml 中似乎缺少该行。 wait-for-it.sh 的第一个参数看起来也错误,但这不会导致您看到的错误。 @David Maze 更新了话题 @David Maze,第一个参数有什么问题? 应该是数据库服务器的主机:端口,应该是my_sql_percona:3306 Docker Hub 上没有 boxfuse/flyway 图像。这是一个定制的镜像吗?你有它的 Dockerfile 吗? (我想知道 (a) 是否有一个 ENTRYPOINT 会弄乱命令行,以及 (b) 图像中是否真的有 wait-for-it.sh 脚本?) 【参考方案1】:

Dockerfile for that image says:

ENTRYPOINT ["flyway"]
CMD ["-?"]

这两个部分连接在一起,您键入的任何参数作为docker run 的参数只会替换CMD 部分。也就是说,实际上您正在运行flyway ./wait-for-it.sh ...,而flyway 命令不知道如何处理它。

如果你想继续这条路,可能你最简单的下一步是将你自己的自定义图像FROM boxfuse/flywayCOPY wait-for-it.sh 写入图像,然后添加它自己的入口点脚本来执行wait-for-it 步骤并结束exec flyway "$@"

【讨论】:

我是 docker 的新手。你能提供所有细节吗?

以上是关于错误:无效参数:./wait-for-it.sh的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获PDOException:SQLSTATE [HY093]:参数号无效:无参数

firebase 云消息传递请求包含无效参数

错误代码:ERR_INVALID_ARGUMNT

加载操作中的 BigQuery 错误:令牌无效 - 令牌无效:无状态令牌已过期

获取无类型和无效文字错误

为啥我在尝试实施 Gmail Oauth 时将“SameSite”属性设置为“无”或无效值,而没有“安全”错误