【发布时间】:2017-03-09 04:01:35
【问题描述】:
我正在准备在 Ubuntu 中使用 Docker Compose 部署微服务和 flyway 服务。 docker-compose.yml 看起来像这样:
version: '2'
services:
mysqldb:
image: mysql:5.6.26
environment:
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: base
ports:
- "3306:3306"
flyway-service-i:
image: mialk/flyway-service
volumes:
- "../resources/db/migration:/migrations/ro"
depends_on:
- mysqldb
links:
- mysqldb
command: migrate -url=jdbc:mysql://mysqldb:3306/base -user=user -password=password -baselineOnMigrate=true - locations='filesystem:/migrations'
service1:
image: my/service
ports:
- "8080:8080"
links:
- mysqldb
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:3306/base
- SPRING_DATASOURCE_USERNAME=user
- SPRING_DATASOURCE_PASSWORD=password
但是当我运行命令:sudo docker-compose up 时,我有这个消息:
flyway-service-i_1 |错误:无法从数据源 (jdbc:mysql://mysqldb:3306/base) 为用户 'user' 获取 Jdbc 连接:不允许主机 '172.18.0.4' 连接到此 MySQL 服务器
每次我运行命令时,我都会得到一个不同的主机,例如:
错误:无法从数据源 (jdbc:mysql://mysqldb:3306/base) 为用户 'user' 获取 Jdbc 连接:不允许主机 '172.18.0.6'连接到这个 MySQL 服务器
数据库就是这样创建的:
CREATE DATABASE base CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON base.* To 'user'@'localhost';
ifconfig 命令显示 Docker 的 IP 为 172.17.0.1。
我不知道为什么flyway无法连接到数据库,为什么每次调用主机都会改变,请您帮帮我吗?
谢谢! :)
【问题讨论】:
-
你用的是什么版本的docker?
$ docker version -
@Fabian 我正在使用:版本:1.12.1 API 版本:1.24 谢谢!
标签: java docker docker-compose dockerfile flyway