为Mysql 8.0构建Docker容器失败

时间:2019-08-26 08:04:22

标签: mysql docker dockerfile

我需要为多个项目创建一个docker容器,以便在PHP 7.3中使用Mysql 8.0

我喜欢创建它,因为我需要修改mysql启动配置

为此,我创建

Dockerfile

FROM mysql:8.0

COPY mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf

ENV MYSQL_ROOT_PASSWORD="123456"

mysqld_charset.cnf

[mysqld]
default-authentication-plugin = mysql_native_password
collation-server = utf8mb4_general_ci
character-set-server = utf8mb4

许可和自述文件。

执行

$ docker build --no-cache -t mysql8_legacy_password .                                                                     
Sending build context to Docker daemon  14.85kB
Step 1/3 : FROM mysql:8.0
 ---> 62a9f311b99c
Step 2/3 : COPY mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf
 ---> 0e21143ae822
Step 3/3 : ENV MYSQL_ROOT_PASSWORD="123456"
 ---> Running in a8d350dbd651
Removing intermediate container a8d350dbd651
 ---> 7dd66b27be00
Successfully built 7dd66b27be00
Successfully tagged mysql8_legacy_password:latest

$  docker run --name mysql8_legacy_password  -it mysql:8.0                                                                
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

1 个答案:

答案 0 :(得分:1)

问题在运行命令中。

docker run --name mysql8_legacy_password -it mysql:8.0

您正在尝试从mysql:8.0映像中启动一个未设置环境的容器。

docker run命令的最后一个参数应该是图像名称。由于您已将图像标记为mysql8_legacy_password,因此应该可以:

docker run --name container_name -it mysql8_legacy_password

docker run