使用docker-compose启动并初始化mysql
流程
步骤 | 描述 |
---|---|
1. | 创建docker-compose.yml文件 |
2. | 编写docker-compose配置 |
3. | 创建init.sql文件 |
4. | 在docker-compose配置中添加初始化sql |
5. | 启动docker容器 |
详细步骤
1. 创建docker-compose.yml文件
在项目根目录下创建一个名为docker-compose.yml的文件,用于描述docker容器的配置。
2. 编写docker-compose配置
在docker-compose.yml文件中添加以下内容,用于配置mysql容器:
version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: dbname
MYSQL_USER: dbuser
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
version: '3'
:指定使用的docker-compose版本。services.db.image
:指定mysql镜像的名称和版本。services.db.restart
:定义容器重启策略。services.db.environment
:配置mysql的环境变量,包括root密码、数据库名称、用户名和密码。services.db.ports
:将mysql容器的3306端口映射到主机的3306端口。services.db.volumes
:将init.sql文件挂载到容器的/docker-entrypoint-initdb.d/
目录下,用于初始化数据库。
3. 创建init.sql文件
在项目根目录下创建一个名为init.sql的文件,用于编写初始化数据库的SQL语句。
4. 在docker-compose配置中添加初始化sql
在docker-compose.yml文件的volumes配置中添加以下内容,将init.sql文件挂载到mysql容器的初始化目录下:
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
5. 启动docker容器
在终端中执行以下命令,使用docker-compose启动mysql容器:
docker-compose up -d
-d
参数表示以后台模式启动容器。
示例代码
docker-compose.yml
version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: dbname
MYSQL_USER: dbuser
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
init.sql
CREATE DATABASE IF NOT EXISTS dbname;
USE dbname;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane', 'jane@example.com');
序列图
以下是docker-compose启动并初始化mysql的序列图:
sequenceDiagram
participant 用户
participant 终端
participant docker-compose
participant mysql容器
用户 ->> 终端: 执行docker-compose up -d命令
终端 ->> docker-compose: 发送启动命令
docker-compose ->> mysql容器: 根据docker-compose.yml配置创建容器
mysql容器 -->> 终端: 返回容器启动成功信息
以上是通过docker-compose启动并初始化mysql的流程,通过这个方法你可以轻松地创建和初始化mysql容器。