用Docker和Docker Compose启动MySQL失败

引起这种情况的原因

MYSQL_ROOT_PASSWORD 是必需的。

Docker编码

docker run -it --name mysql -d mysql

无法启动。

docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql

开动。

Docker Compose编排

# docker-compose ps

     Name                         Command             State                                  
----------------------------------------------------------------
mysql_1_e6c3b5334932    docker-entrypoint.sh mysqld   Exit 1

你要是不启动的话我就麻烦了。

> docker-compose logs | findstr mysql

Attaching to mysql_1_bff667044a7f, python_1_9815f4b12db2
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

因为是Windows,所以使用了findstr命令,但如果是Linux,则使用grep命令。

出现了一个错误,数据库没有被初始化并且没有指定密码选项。

  mysql:
    image: mysql
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_ROOT_PASSWORD: P@ssw0rd

由于这个原因,我已成功地指定数据库名称和密码选项并启动了它。