Skip to content

Instantly share code, notes, and snippets.

@keidrun
Last active February 26, 2024 05:03
Show Gist options
  • Save keidrun/1056a752dfe1548c9f6ea5fc893450c2 to your computer and use it in GitHub Desktop.
Save keidrun/1056a752dfe1548c9f6ea5fc893450c2 to your computer and use it in GitHub Desktop.
Cheat Sheet about Docker Compose For Database
version: '3'
services:
db:
image: mongo:4.0
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
ports:
- 27017:27017
volumes:
- mongo:/data/db
mongo-seed:
image: mongo:4.0
command: bash -c "chmod +x /init_mongo.sh && /init_mongo.sh"
environment:
MONGO_SEED_ON: 1
MONGO_SEED_PATH: /seed
MONGO_HOST: db
MONGO_PORT: 27017
MONGO_ROOT_USERNAME: root
MONGO_ROOT_PASSWORD: root
MONGO_AUTH_DATABASE: admin
MONGO_DATABASE: test_db
volumes:
- ./mongo/seed:/seed
- ./mongo/init_mongo_auth.sh:/init_mongo_auth.sh
depends_on:
- db
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_SERVER: db
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: root
depends_on:
- db
volumes:
mongo:
version: '3'
services:
db:
image: mongo:4.0
restart: always
ports:
- 27017:27017
volumes:
- mongo:/data/db
mongo-seed:
image: mongo:4.0
command: bash -c "chmod +x /init_mongo.sh && /init_mongo.sh"
environment:
MONGO_SEED_ON: 1
MONGO_SEED_PATH: /seed
MONGO_HOST: db
MONGO_PORT: 27017
MONGO_DATABASE: test_db
volumes:
- ./mongo/seed:/seed
- ./mongo/init_mongo.sh:/init_mongo.sh
depends_on:
- db
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_SERVER: db
ME_CONFIG_MONGODB_PORT: 27017
depends_on:
- db
volumes:
mongo:
version: '3'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
TZ: "Etc/UTC"
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test_db
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
volumes:
- mysql:/var/lib/mysql
- ./mysql/initdb:/docker-entrypoint-initdb.d
# Choise 1: Standard Admin
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8080:80
environment:
PMA_ARBITRARY: 1
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: root
depends_on:
- db
# Choise 2: Light-weight Admin
# adminer:
# image: adminer
# restart: always
# ports:
# - 8080:8080
# depends_on:
# - db
volumes:
mysql:
version: '3'
services:
db:
image: postgres:11.4-alpine
restart: always
environment:
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C"
TZ: "Etc/UTC" # "Asia/Tokyo"
POSTGRES_USER: test
POSTGRES_PASSWORD: test
POSTGRES_DB: test_db
ports:
- 5432:5432
volumes:
- postgres:/var/lib/postgresql/data
- ./postgres/initdb:/docker-entrypoint-initdb.d
# Choise 1: Standard Admin
pgadmin:
image: dpage/pgadmin4
restart: always
ports:
- 8080:80
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- pgadmin:/var/lib/pgadmin
depends_on:
- db
# Choise 2: Light-weight Admin
# adminer:
# image: adminer
# restart: always
# ports:
# - 8080:8080
# depends_on:
# - db
volumes:
postgres:
pgadmin:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.34
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
port: 4466
# uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
# managementApiSecret: my-secret
databases:
default:
connector: mysql
host: mysql
user: root
password: prisma
rawAccess: false # Disable to fix https://github.com/prisma/prisma-admin-feedback/issues/130
port: 3306
migrations: false # Disable to fix https://github.com/prisma/prisma-admin-feedback/issues/130
mysql:
image: mysql:5.7
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: prisma
volumes:
- mysql:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
PMA_ARBITRARY: 1
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: prisma
depends_on:
- mysql
volumes:
mysql:
#!/bin/bash
# MONGO_SEED_ON is equal to 1 as default
if [ ${MONGO_SEED_ON:-1} -eq 0 ]; then
echo "No seed imported."
exit 0
fi
# NOTE: Each JSON file name must show each collection name
for file in `\find "$MONGO_SEED_PATH" -name "*.json" -maxdepth 1`; do
mongoimport --host "$MONGO_HOST:$MONGO_PORT" --db "$MONGO_DATABASE" --type json --file "$file" --jsonArray
done
#!/bin/bash
# MONGO_SEED_ON is equal to 1 as default
if [ ${MONGO_SEED_ON:-1} -eq 0 ]; then
echo "No seed imported."
exit 0
fi
# NOTE: Each JSON file name must show each collection name
for file in `\find "$MONGO_SEED_PATH" -name "*.json" -maxdepth 1`; do
mongoimport --host "$MONGO_HOST:$MONGO_PORT" --username "$MONGO_ROOT_USERNAME" --password "$MONGO_ROOT_PASSWORD" --authenticationDatabase "$MONGO_AUTH_DATABASE" --db "$MONGO_DATABASE" --type json --file "$file" --jsonArray
done
endpoint: http://localhost:4466
datamodel: datamodel.prisma
generate:
- generator: javascript-client
output: ./generated/prisma-client/
seed:
import: seed.graphql
hooks:
post-deploy:
- prisma generate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment