Containers

This guide provides detailed instructions for setting up a docker container including network configuration, volume management, and container deployment.

Database

MySQL

Image: https://hub.docker.com/_/mysql

Create Network

docker network create mysql_network

Create Volume

docker volume create mysql_data

Create Container

docker run -d \
  --name mysql_container \
  -e MYSQL_ROOT_PASSWORD=rootpassword \
  -e MYSQL_DATABASE=mydatabase \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=mypassword \
  -v mysql_data:/var/lib/mysql \
  --network mysql_network \
  -p 3306:3306 \
  --restart unless-stopped \
  mysql:8.0

PostgreSQL

Image: https://hub.docker.com/_/postgres/tags

Create Network

docker network create pg_network

Create Volume

docker volume create pg_data

Create Container

docker run -d \
  --name postgres \
  --restart unless-stopped \
  -p 5432:5432 \
  -v pg_data:/var/lib/postgresql/data \
  -e POSTGRES_PASSWORD=postgres123 \
  -e POSTGRES_USER=posgres_user \
  -e POSTGRES_DB=test_database \
  --health-cmd "pg_isready -U posgres_user -d test_database" \
  --health-interval 10s \
  --health-timeout 5s \
  --health-retries 3 \
  --network pg_network \
  postgres:17.3-alpine

In Memory Storage

Redis

Image: https://hub.docker.com/_/redis/tags

Create Network

docker network create redis_network

Create Volume

docker volume create redis_data

Create Container

docker run -d \
  --name redis \
  --restart unless-stopped \
  -p 6379:6379 \
  -v redis_data:/data \
  --health-cmd "redis-cli --raw incr ping" \
  --health-interval 1s \
  --health-timeout 3s \
  --health-retries 5 \
  --network redis_network \
  redis:5-alpine

Message Queue

Rabbit MQ

Image: https://hub.docker.com/_/rabbitmq

Create Volume

docker volume create rabbitmq_data

Create Container

docker run -d \
  --name rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=password \
  -v rabbitmq_data:/var/lib/rabbitmq \
  rabbitmq:3.10-management-alpine \
  bash -c "curl -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.10.2/rabbitmq_delayed_message_exchange-3.10.2.ez > /plugins/rabbitmq_delayed_message_exchange-3.10.2.ez && \
           rabbitmq-plugins enable rabbitmq_delayed_message_exchange && \
           docker-entrypoint.sh rabbitmq-server"

NSQ

Image: https://hub.docker.com/r/nsqio/nsq

Create Volume

docker volume create nsqlookupd_data 
docker volume create nsqd_data 
docker volume create nsqd_queue

Create Container

nsqlookupd

docker run -d --name nsqlookupd \
  -p 4160:4160 \
  -p 4161:4161 \
  -v nsqlookupd_data:/data \
  nsqio/nsq:v1.2.1 \
  /nsqlookupd

nsqd

docker run -d --name nsqd \
  -p 4150:4150 \
  -p 4151:4151 \
  -v nsqd_data:/data \
  -v nsqd_queue:/var/lib/nsq \
  --link nsqlookupd:nsqlookupd \
  nsqio/nsq:v1.2.1 \
  /nsqd --lookupd-tcp-address=nsqlookupd:4160

nsqadmin

docker run -d --name nsqadmin \
  -p 4171:4171 \
  --link nsqlookupd:nsqlookupd \
  nsqio/nsq:v1.2.1 \
  /nsqadmin --lookupd-http-address=nsqlookupd:4161

Last updated