【发布时间】:2021-04-02 18:44:08
【问题描述】:
我有这样的问题,我正在尝试按照本教程https://developpaper.com/master-slave-replication-of-mysql-based-on-docker/做主从复制。 镜像的构建没有问题,但是运行这个容器有问题。我无法访问 docker 中 mysql 容器的 mysql 命令,它似乎是从 mysql 构建的(来自 docker hub 的图像),但无法启动。 有以下文件:
Dockerfile:
#Using MySQL image to create a new image
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD Kohc9hai
COPY start.sh /mysql/start.sh
COPY my.cnf /etc/mysql/my.cnf
COPY init.sql /mysql/init.sql
EXPOSE 6603
CMD ["sh", "/mysql/start.sh"]
init.sql:
--Create data_ Copy database
DROP DATABASE IF EXISTS `data_copy`;
CREATE DATABASE `data_copy` /*!40100 DEFAULT CHARACTER SET utf8mb4 collate utf8mb4_general_ci */;
--Create person table
USE `data_copy`;
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`id` int(32) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
my.cnf:
[mysqld]
log-bin = mysql-bin
server-id = 1
start.sh:
#!/bin/sh
echo "start MySQL"
service mysql start
sleep 5
echo "initialize database"
mysql -uroot -pKohc9hai < /mysql/init.sql
echo "initialization complete"
tail -f /dev/null
通过深入,我认为我确定问题出在文件 start.sh 中(也许我错了)。
有这个容器的日志:
start MySQL
mysql: unrecognized service
initialize database
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
initialization complete
也许有人可以帮助我解决这个问题。 我刚开始学习Docker。
【问题讨论】:
标签: mysql docker dockerfile dockerhub ubuntu-20.04