Docker Install Databases
This chapter covers how to deploy MySQL, PostgreSQL, MongoDB, and Redis using Docker.
MySQL
Quick Start
bash
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:8.0Full Configuration
bash
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=myuser \
-e MYSQL_PASSWORD=mypassword \
-v mysql-data:/var/lib/mysql \
mysql:8.0Environment Variables
| Variable | Description |
|---|---|
MYSQL_ROOT_PASSWORD | Root password (required) |
MYSQL_DATABASE | Initial database name |
MYSQL_USER | Create regular user |
MYSQL_PASSWORD | Regular user password |
Connect
bash
docker exec -it mysql mysql -uroot -p
docker exec -i mysql mysql -uroot -pmy-secret-pw mydb < dump.sql
docker exec mysql mysqldump -uroot -pmy-secret-pw mydb > backup.sqlPostgreSQL
Quick Start
bash
docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=my-secret-pw postgres:16Full Configuration
bash
docker run -d \
--name postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=my-secret-pw \
-e POSTGRES_USER=myuser \
-e POSTGRES_DB=mydb \
-v postgres-data:/var/lib/postgresql/data \
postgres:16Connect
bash
docker exec -it postgres psql -U myuser -d mydb
docker exec -i postgres psql -U myuser -d mydb < dump.sql
docker exec postgres pg_dump -U myuser mydb > backup.sqlMongoDB
Quick Start
bash
docker run -d --name mongodb -p 27017:27017 mongo:7With Authentication
bash
docker run -d \
--name mongodb \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=my-secret-pw \
-v mongo-data:/data/db \
mongo:7Connect
bash
docker exec -it mongodb mongosh
docker exec -it mongodb mongosh -u admin -p my-secret-pwRedis
Quick Start
bash
docker run -d --name redis -p 6379:6379 redis:7With Password and Persistence
bash
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
redis:7 redis-server --requirepass my-secret-pw --appendonly yesConnect
bash
docker exec -it redis redis-cli
docker exec -it redis redis-cli -a my-secret-pw
docker exec -it redis redis-cli ping # Output: PONGDocker Compose Multi-Database Deployment
yaml
services:
mysql:
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: mydb
volumes:
- mysql-data:/var/lib/mysql
postgres:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- postgres-data:/var/lib/postgresql/data
mongodb:
image: mongo:7
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: secret
volumes:
- mongo-data:/data/db
redis:
image: redis:7
ports:
- "6379:6379"
command: redis-server --requirepass secret --appendonly yes
volumes:
- redis-data:/data
volumes:
mysql-data:
postgres-data:
mongo-data:
redis-data:bash
docker compose up -d
docker compose ps
docker compose down
docker compose down -v # Also remove volumesChapter Summary
Docker makes database deployment simple. Always use volumes for data persistence, configure via environment variables, and back up regularly.