Har*_*rry 5 mysql docker kubernetes
我想在容器的MySQL上设置初始数据.在docker-compose.yml中,此类代码可以在运行容器时创建初始数据.
volumes:
- db:/var/lib/mysql
- "./docker/mysql/conf.d:/etc/mysql/conf.d"
- "./docker/mysql/init.d:/docker-entrypoint-initdb.d"
Run Code Online (Sandbox Code Playgroud)
但是,如何在运行时在Kubernetes上创建初始数据?
iva*_*sim 10
根据MySQL Docker镜像README,与容器启动时数据初始化相关的部分是确保所有初始化文件都安装到容器的/docker-entrypoint-initdb.d文件夹中.
您可以在a中定义初始数据ConfigMap,并在pod中安装相应的卷,如下所示:
apiVersion: extensions/v1beta1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-initdb
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: mysql-initdb
configMap:
name: mysql-initdb-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-initdb-config
data:
initdb.sql: |
CREATE TABLE friends (id INT, name VARCHAR(256), age INT, gender VARCHAR(3));
INSERT INTO friends VALUES (1, 'John Smith', 32, 'm');
INSERT INTO friends VALUES (2, 'Lilian Worksmith', 29, 'f');
INSERT INTO friends VALUES (3, 'Michael Rupert', 27, 'm');
Run Code Online (Sandbox Code Playgroud)
kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-initdb-pv-volume
labels:
type: local
app: mysql
spec:
storageClassName: manual
capacity:
storage: 1Mi
accessModes:
- ReadOnlyMany
hostPath:
path: "/path/to/initdb/sql/scripts"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-initdb-pv-claim
labels:
app: mysql
spec:
storageClassName: manual
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 1Mi
Run Code Online (Sandbox Code Playgroud)
注意:假设您的 SQL 脚本位于/path/to/initdb/sql/scripts
/docker-entrypoint-initdb.dapiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 3306
volumeMounts:
- mountPath: /docker-entrypoint-initdb.d
name: mysql-initdb
volumes:
- name: mysql-initdb
persistentVolumeClaim:
claimName: mysql-initdb-pv-claim
Run Code Online (Sandbox Code Playgroud)
就是这样。
注意:这也适用于 PostgreSQL。
| 归档时间: |
|
| 查看次数: |
5727 次 |
| 最近记录: |