这是我的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"发布于 2019-11-05 23:06:46
当您使用此镜像mysql/5.7时,启动过程分为两个步骤。
第一步是初始化数据库,您会看到下面的消息
2019-11-05T15:01:23.167671Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.但就在数据库停止并重新启动之后。你就不会再有警告了。
发布于 2019-11-05 20:08:19
请查看建议的解决方法:How to use environment variables in docker compose
方法2建议了一种定义包含这类元素(密码)值的.ENV文件的方法。它适用于PostgreSQL,但看起来可能会有所帮助。致以亲切的问候。
发布于 2019-11-05 20:11:05
删除MYSQL_PASSWORD和MYSQL_USER
这些变量是可选的,用于创建新用户和设置该用户的密码。该用户将被授予对MYSQL_DATABASE变量指定的数据库的超级用户权限(请参见上文)。要创建用户,这两个变量都是必需的。
请注意,不需要使用此机制来创建超级用户,默认情况下将使用MYSQL_ROOT_PASSWORD变量指定的密码创建该用户。
https://stackoverflow.com/questions/58710970
复制相似问题