diff --git a/DockerHome/Postgresql/create_more.sh b/DockerHome/Postgresql/create_more.sh new file mode 100644 index 0000000..2a164a6 --- /dev/null +++ b/DockerHome/Postgresql/create_more.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e +set -u + +function create_user_and_database() { + local database=$1 + echo " Creating user and database '$database'" + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL + CREATE USER $database; + CREATE DATABASE $database; + GRANT ALL PRIVILEGES ON DATABASE $database TO $database; +EOSQL +} + +if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then + echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DATABASES" + for db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); do + create_user_and_database $db + done + echo "Multiple databases created" +fi \ No newline at end of file diff --git a/DockerHome/Postgresql/create_more.sql b/DockerHome/Postgresql/create_more.sql new file mode 100644 index 0000000..7cea673 --- /dev/null +++ b/DockerHome/Postgresql/create_more.sql @@ -0,0 +1,8 @@ +CREATE USER keycloak; --kc1992 +CREATE USER wikijs; --wikijsrocks + +CREATE DATABASE keycloak; +GRANT ALL PRIVILEGES ON DATABASE logdata TO keycloak; + +CREATE DATABASE wiki; +GRANT ALL PRIVILEGES ON DATABASE orderdata TO wikijs; diff --git a/DockerHome/docker-compose.yml b/DockerHome/docker-compose.yml new file mode 100644 index 0000000..4dfa816 --- /dev/null +++ b/DockerHome/docker-compose.yml @@ -0,0 +1,84 @@ +version: "3.9" + +services: + keycloak: + image: jboss/keycloak:16.1.1 + restart: unless-stopped + ports: + - 38080:8080 + environment: + KEYCLOAK_USER: kcroot + KEYCLOAK_PASSWORD: "Hai_1992" + PROXY_ADDRESS_FORWARDING: 'true' + DB_VENDOR: POSTGRES + DB_ADDR: postgresql + DB_DATABASE: keycloak + DB_USER: postgres + DB_PASSWORD: kc1992 + #volumes: + #- /home/ubuntu/.myDockerDir/Keycloak/etc/:/etc/ + depends_on: + - postgresql + networks: + - docker_net + + postgresql: + image: postgres:14.3 + restart: unless-stopped + environment: + POSTGRES_DB: postgres + POSTGRES_USER: postgres + POSTGRES_PASSWORD: kc1992 + command: + - 'postgres' + - '-c' + - 'max_connections=100' + - '-c' + - 'shared_buffers=256MB' + volumes: + - /home/ubuntu/.myDockerDir/Postgresql/data:/var/lib/postgresql/data + #- db-data:/var/lib/postgresql/data + - ./Postgresql/create_more.sql:/docker-entrypoint-initdb.d/create_more.sql + networks: + - docker_net + logging: + driver: "none" + + wiki: + image: requarks/wiki + restart: unless-stopped + ports: + - 13444:3000 + - 13443:3443 + environment: + DB_TYPE: postgres + DB_HOST: postgresql + DB_PORT: 5432 + DB_NAME: wiki + DB_USER: wikijs + DB_PASS: wikiPGsql1992 + UPGRADE_COMPANION: 1 + volumes: + - /share/DockerDir/wikijs/data/content:/wiki/data/content + depends_on: + - postgresql + networks: + - docker_net + + wiki-update: + image: requarks/wiki-update-companion + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + depends_on: + - postgresql + - wiki + networks: + - docker_net + +networks: + docker_net: + external: true + + +volumes: + db-data: \ No newline at end of file diff --git a/README.md b/README.md index 3a964bd..a52a7f3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ # docker_template +- k8s + - adminer: 类似phpMyAdmin + + + +--- + +- k8s的yml中可以定义多个资源内容,用`---`行分隔 \ No newline at end of file diff --git a/k8s/adminer/adminer-deployment.yml b/k8s/adminer/adminer-deployment.yml new file mode 100644 index 0000000..54c34e2 --- /dev/null +++ b/k8s/adminer/adminer-deployment.yml @@ -0,0 +1,26 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: adminer + name: adminer +spec: + replicas: 1 + selector: + matchLabels: + app: adminer + template: + metadata: + labels: + app: adminer + spec: + containers: + - name: adminer + image: 'adminer' + ports: + - name: http-9000 + protocol: TCP + containerPort: 9000 + envFrom: + - configMapRef: + name: adminer diff --git a/k8s/adminer/adminer-init.yml b/k8s/adminer/adminer-init.yml new file mode 100644 index 0000000..3eafd40 --- /dev/null +++ b/k8s/adminer/adminer-init.yml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: adminer +data: + ADMINER_DESIGN: pappu687 + ADMINER_PLUGINS: tables-filter + diff --git a/k8s/adminer/adminer-service-inside.yml b/k8s/adminer/adminer-service-inside.yml new file mode 100644 index 0000000..117b82f --- /dev/null +++ b/k8s/adminer/adminer-service-inside.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: adminer +spec: + selector: + app: adminer + ports: + - protocol: TCP + port: 9000 + targetPort: http-9000 diff --git a/k8s/adminer/adminer-service-outside.yml b/k8s/adminer/adminer-service-outside.yml new file mode 100644 index 0000000..9387971 --- /dev/null +++ b/k8s/adminer/adminer-service-outside.yml @@ -0,0 +1,18 @@ +kind: Ingress +apiVersion: networking.k8s.io/v1 +metadata: + name: adminer +spec: + ingressClassName: nginx + rules: + - host: adminer.xyz.cn + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: adminer + port: + number: 9000 + diff --git a/k8s/postgres/postgres-deployment.yml b/k8s/postgres/postgres-deployment.yml new file mode 100644 index 0000000..ae8bd33 --- /dev/null +++ b/k8s/postgres/postgres-deployment.yml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: postgres-prod + name: postgres-prod +spec: + replicas: 1 + selector: + matchLabels: + app: postgres-prod + template: + metadata: + labels: + app: postgres-prod + spec: + containers: + - name: db + imagePullPolicy: IfNotPresent + image: 'postgres:14.2-alpine' + ports: + - name: tcp-5432 + protocol: TCP + containerPort: 5432 + envFrom: + - secretRef: + name: postgres-prod + volumeMounts: + - name: postgres-prod-data + readOnly: false + mountPath: /var/lib/postgresql/data + - name: wikijs-postgres-init + readOnly: true + mountPath: /docker-entrypoint-initdb.d + volumes: + - name: postgres-prod-data + persistentVolumeClaim: + claimName: postgres-prod-data + - name: wikijs-postgres-init + configMap: + name: wikijs-postgres-init diff --git a/k8s/postgres/postgres-init.yml b/k8s/postgres/postgres-init.yml new file mode 100644 index 0000000..7611bb2 --- /dev/null +++ b/k8s/postgres/postgres-init.yml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: wikijs-postgres-init +data: + init.sql: |- + CREATE DATABASE wikijs; + CREATE USER wikijs with password 'Wiki1992.920'; + GRANT CONNECT ON DATABASE wikijs to wikijs; + GRANT USAGE ON SCHEMA public TO wikijs; + GRANT SELECT,update,INSERT,delete ON ALL TABLES IN SCHEMA public TO wikijs; + ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO wikijs; + + CREATE DATABASE keycloak; + CREATE USER keycloak with password 'Wiki1992.920'; + GRANT CONNECT ON DATABASE keycloak to keycloak; + GRANT USAGE ON SCHEMA public TO keycloak; + GRANT SELECT,update,INSERT,delete ON ALL TABLES IN SCHEMA public TO keycloak; + ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO keycloak; diff --git a/k8s/postgres/postgres-service.yml b/k8s/postgres/postgres-service.yml new file mode 100644 index 0000000..b809a9f --- /dev/null +++ b/k8s/postgres/postgres-service.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres-prod +spec: + selector: + app: postgres-prod + ports: + - protocol: TCP + port: 5432 + targetPort: tcp-5432 diff --git a/k8s/wikijs/k8s.sh b/k8s/wikijs/k8s.sh new file mode 100644 index 0000000..f9bae1e --- /dev/null +++ b/k8s/wikijs/k8s.sh @@ -0,0 +1,11 @@ +#!/bin/env bash + +# 0. namespace + +# 1. define resource +kubectl apply -f wikijs-config.yaml configmap/postgres-config +# 2. define secret +kubectl apply -f wikijs-secret.yaml secret/postgres +# 3. Deploy the Service and Wiki.js application + +# 4. apply access from outside \ No newline at end of file diff --git a/k8s/wikijs/wikijs-config.yml b/k8s/wikijs/wikijs-config.yml new file mode 100644 index 0000000..8f1b86e --- /dev/null +++ b/k8s/wikijs/wikijs-config.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + DB_HOST: "" + DB_PORT: "5432" + DB_USER: "wikijs" + DB_TYPE: "postgres" + DB_NAME: "wiki" +kind: ConfigMap +metadata: + name: postgres-config + namespace: wikijs \ No newline at end of file diff --git a/k8s/wikijs/wikijs-secret.yaml b/k8s/wikijs/wikijs-secret.yaml new file mode 100644 index 0000000..6d65f4c --- /dev/null +++ b/k8s/wikijs/wikijs-secret.yaml @@ -0,0 +1,8 @@ + +apiVersion: v1 +kind: Secret +metadata: + name: postgres-prod +data: + POSTGRES_PASSWORD: 自行填写 +type: Opaque