Мне нужно несколько баз данных в одной службе 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
но когда я подключаюсь к нему и перечисляю базы данных, я ничего не вижу.
Я предполагаю, что моя конфигурация настроена неправильно, но я не знаю, в чем проблема.
Заранее спасибо.
Тео
Добавьте ту же конфигурацию в файл файл для докеры, как:
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>
Если вам это нужно в одной службе, если вы имеете в виду, то вам нужно загрузить этот объем докеров в ваше приложение. Если вы хотите, чтобы приложение было настроено с двумя базами данных, добавьте In Loadbalancer, такие свойства, как Config.services.mysqlserver1 (хост, порт, пропуск).
Если вы используете AD Accumulator (например, JPA), тогда вам нужно добавить schema.sql seprately с чем-то вроде
CREATE DATABASE IF NOT EXISTS keyshake;
CREATE DATABASE IF NOT EXISTS pdns;
И добавьте путь к schema.sql в точке входа docker для обоих экземпляров изображения вместо docker-entrypoint-initdb. sql→ schema.sql
Настройте разные порты в портах и посмотрите "docker -ti mysql1/bin/bash"
и "docker -ti server2/bin/bash"
, имеют ли оба экземпляра базы данных нужные таблицы.
Надеюсь это поможет!!!.