这是我的docker-compose.yml文件,其中包含指定的环境变量(root用户名,密码等)。但是,当我运行“ docker-compose up”时,它表示MySQL正在使用空密码进行初始化!
为什么?有解决方法吗?
这是docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
#build: sqldocker
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=testdb
- MYSQL_USER=root
- MYSQL_PASSWORD=123456
# volumes:
# - my-datavolume:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping"]
timeout: 20s
retries: 10
restart: always
backendserver:
build: ./docker-demo-backend/
ports:
- "8080:8080"
links:
- "db"
depends_on:
- "db"
# restart: always
frontend:
build: ./docker-demo-frontend/frontcrud
links:
- "backendserver"
depends_on:
- "backendserver"
ports:
- "80:80"
答案 0 :(得分:1)
使用此图像mysql/5.7
时,启动过程分为2个步骤。
第一步是执行数据库初始化,您将收到此消息
2019-11-05T15:01:23.167671Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
但是在DB停止并重新启动之后。而且您再也没有警告了。
答案 1 :(得分:0)
请查看以下位置建议的解决方法: How to use environment variables in docker compose
方法2提出了一种定义.ENV文件的方法,该文件包含此类元素(密码)的值。它适用于PostgreSQL,但似乎有帮助。 此致。
答案 2 :(得分:0)
删除MYSQL_PASSWORD和MYSQL_USER
这些变量是可选的,与创建新用户和设置该用户的密码一起使用。将为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。
请注意,无需使用此机制来创建根超级用户,该用户默认情况下是使用MYSQL_ROOT_PASSWORD变量指定的密码创建的。