我在一个mysql服务中需要多个数据库。
apiVersion: v1
kind: Service
metadata:
name: database
labels:
app: keyshake
spec:
ports:
- port: 3306
selector:
app: keyshake
tier: database
type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-pv-claim
labels:
app: keyshake
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: database
labels:
app: keyshake
spec:
selector:
matchLabels:
app: keyshake
tier: database
strategy:
type: Recreate
template:
metadata:
labels:
app: keyshake
tier: database
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_RANDOM_ROOT_PASSWORD
value: "yes"
- name: MYSQL_USER
value: keyshake
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: database-password
key: password
ports:
- containerPort: 3306
name: database
volumeMounts:
- name: database-persistent-storage
mountPath: /var/lib/mysql
- name: mysql-initdb
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: database-persistent-storage
persistentVolumeClaim:
claimName: database-pv-claim
- name: mysql-initdb
configMap:
name: mysql-initdb-config
这是我的配置。 现在,我正在使用具有以下内容的配置映射:
init.sql:
CREATE DATABASE IF NOT EXISTS keyshake;
CREATE DATABASE IF NOT EXISTS pdns;
当我创建服务时,它会记录此/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
,但是当我连接到该服务并列出数据库时,我什么也看不到。
我想我的配置没有正确设置,但是我不知道问题出在哪里。
谢谢。
西奥
答案 0 :(得分:0)
在docker-compose文件中添加相同的配置,例如:
services:
mysql1:
container_name: mysqlserver
image: mysql:5.6
ports:
- 3310:3306
volumes:
- ./sqlserver:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: <dbname1>
MYSQL_USER: <db1user>
MYSQL_PASSWORD: <db1pass>
mysql2:
container_name: mysqlserver2
image: mysql:5.6
environment:
volumes:
- ./sqlserver:/docker-entrypoint-initdb2.d
ports:
- 3311:3306
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: <dbname2>
MYSQL_USER: <db2user>
MYSQL_PASSWORD: <db2pass>
如果您需要一项服务,如果您的意思是正确的,则需要将该Docker卷加载到您的应用程序中。如果要使用2个数据库配置应用程序,请在Loadbalancer中添加Config.services.mysqlserver1(host,port,pass)之类的属性。
如果您不使用DB Accumulator(例如JPA),则必须单独添加诸如
之类的schema.sqlCREATE DATABASE IF NOT EXISTS keyshake;
CREATE DATABASE IF NOT EXISTS pdns;
并在两个映像实例的docker入口点中添加schema.sql的路径,以代替docker-entrypoint-initdb.sql ----> schema.sql
在端口中配置不同的租户,请参见"docker -ti mysql1 /bin/bash"
和"docker -ti server2 /bin/bash"
,以了解两个数据库实例是否都具有所需的表。
希望这会有所帮助!!