目录

Docker部署MySQL实例用于本地测试

概述

准备写一个依赖 MySQL 的 CRUD Web 服务,计划本地通过 Docker 部署一个简单的 MySQL 实例用于本地测试。

镜像准备

注意不同版本的的 MySQL 的一些配置可能会有差异。

1
docker pull mysql:5.7.36

运行镜像

通过环境变量设置密码,方便快捷!通过 -p 3306:3306 将容器端口绑定到主机相同的端口上,这样应用起来就更方便了。

1
2
3
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36
# 下面是运行一个Redis容器
docker run -p 6379:6379 --name redis redis:7.0.8

运行效果

/docker%E9%83%A8%E7%BD%B2mysql%E5%AE%9E%E4%BE%8B%E7%94%A8%E4%BA%8E%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95/img.png

Kubernetes版本

可以通过下面的 yaml 文件,在 Kubernetes 集群上快速部署一个 MySQL 服务,注意前提是集群内已经安装了 StorageClass 和 CSI 等资源。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
k delete deployment mysql-deployment
k delete pvc self-mysql-pv-claim
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7.36
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: wandb_local
        - name: MYSQL_USER
          value: wandb_local
        - name: MYSQL_PASSWORD
          value: "123456"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: self-mysql-pv-claim
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: self-mysql-pv-claim
spec:
  storageClassName: csi-cephfs-sc
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi          
EOF
警告
本文最后更新于 2021年9月2日,文中内容可能已过时,请谨慎参考。