Docker Compose中的MySQL未采用环境变量

这是我的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"
xh_tong 回答:Docker Compose中的MySQL未采用环境变量

使用此图像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停止并重新启动之后。而且您再也没有警告了。

,

请查看以下位置建议的解决方法: How to use environment variables in docker compose

方法2提出了一种定义.ENV文件的方法,该文件包含此类元素(密码)的值。它适用于PostgreSQL,但似乎有帮助。 此致。

,

删除MYSQL_PASSWORD和MYSQL_USER

这些变量是可选的,与创建新用户和设置该用户的密码一起使用。将为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。

请注意,无需使用此机制来创建根超级用户,该用户默认情况下是使用MYSQL_ROOT_PASSWORD变量指定的密码创建的。

本文链接:https://www.f2er.com/3159827.html

大家都在问