Skip to content

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.0

Full 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.0

Environment Variables

VariableDescription
MYSQL_ROOT_PASSWORDRoot password (required)
MYSQL_DATABASEInitial database name
MYSQL_USERCreate regular user
MYSQL_PASSWORDRegular 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.sql

PostgreSQL

Quick Start

bash
docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=my-secret-pw postgres:16

Full 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:16

Connect

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.sql

MongoDB

Quick Start

bash
docker run -d --name mongodb -p 27017:27017 mongo:7

With 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:7

Connect

bash
docker exec -it mongodb mongosh
docker exec -it mongodb mongosh -u admin -p my-secret-pw

Redis

Quick Start

bash
docker run -d --name redis -p 6379:6379 redis:7

With 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 yes

Connect

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: PONG

Docker 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 volumes

Chapter Summary

Docker makes database deployment simple. Always use volumes for data persistence, configure via environment variables, and back up regularly.

Further Reading

Content is for learning and research only.