根據MySQL的泊塢窗圖像README,與容器上的數據初始化相關的部分啓動是爲了確保您的所有初始化文件都安裝到容器的/docker-entrypoint-initdb.d
文件夾中。
您可以在ConfigMap
定義您的初始數據,並安裝在吊艙相應的體積是這樣的:
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');
雖然我設置了hostPath,但似乎需要絕對路徑。 但是我遇到了這個錯誤。 錯誤:代碼= 2 DESC =未能啓動容器「ae00a8dc51d8895506881960a310c447b67643ccd088d164891a68f32f124634」:從後臺程序錯誤響應命令mkdir/gcptmp:只讀文件系統 – Harry
@Harry我已經更新我的答案使用帶有'ConfigMap'量。使用'hostPath'要求您將容器作爲特權容器運行,或者修改主機上的文件權限以便寫入'hostPath'卷,在大多數情況下這是不必要的。 –
這似乎是可能的配置yaml文件bacome凌亂,如果sql很大。 在我目前的情況下,我創建了包含初始sql文件的擴展mysql映像。 但是,我從你身上學到了很多東西。謝謝!! – Harry