【发布时间】: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 |错误:无效参数:./wait-for-it.sh
我做错了什么?
【问题讨论】:
-
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脚本?)