我有一个docker-compose.yml,用于设置API服务,测试MYSQL数据库和java任务工作者应用程序。然后,我针对本地堆栈运行API集成测试。每次运行它时,我都会执行docker-compose rm -v
以确保每次测试运行时我的数据库都相同。
在本地,我的docker-compose文件正确设置了我的图像。
在Jenkins中,使用相同的docker-compose文件,我得到上述错误,复制到这里:
0mERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
图片的主机名可能会出现问题。
这是我的数据库设置的Dockerfile:
FROM mysql
ENV MYSQL_DATABASE="db_name"
ENV MYSQL_USER="user"
ENV MYSQL_PASSWORD="password1"
ENV MYSQL_ROOT_PASSWORD="password"
COPY *.sql /docker-entrypoint-initdb.d/
EXPOSE 3306
这是我的docker-compose.yml:
web-api:
image: registry/api-repo
links:
- test-db
ports:
- "8625:8625"
environment:
- MYSQL_DATABASE=db_name
- MYSQL_HOST=test-db
- MYSQL_USER=user
- MYSQL_PASSWORD=password1
custodial-java:
image: registry/java-repo
links:
- test-db
environment:
- MYSQL_DATABASE=db_name
- MYSQL_HOST=test-db
- MYSQL_USER=user
- MYSQL_PASSWORD=password1
test-db:
image: registry/test-db
ports:
- "3306:3306"
我可能在Jenkins配置中遗漏了一些东西,但我不确定在哪里看。
答案 0 :(得分:0)
事实证明,Jenkins上的Docker版本与我的本地机器不同。在我的本地机器上,我使用的是Docker 17.03,而Jenkins盒子正在运行Docker Toolbox 1.5。
在更新构建机器以使用最新的docker工具箱(我相信1.12)之后,我不再收到此错误和我的自动化测试功能!