Docker MySQL
How to run MySQL in Docker.
Docker MySQL
# Run MySQL
docker run -d \
--name mysql-db \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-e MYSQL_DATABASE=myapp \
-e MYSQL_USER=user \
-e MYSQL_PASSWORD=password \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0
docker-compose.yml
version: '3.8'
services:
database:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: myapp
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3306:3306"
networks:
- app-net
api:
build: .
environment:
DB_HOST: database
DB_PORT: 3306
DB_NAME: myapp
DB_USER: user
DB_PASSWORD: password
networks:
- app-net
networks:
app-net:
volumes:
mysql-data:
Use Case: MySQL Application
# Run MySQL
docker run -d \
--name myapp-mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=myapp \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=admin123 \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0
# Connect to MySQL
docker exec -it myapp-mysql mysql -u root -p
Everyday Use Case
Case: A developer needs a MySQL database.
# Run MySQL
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mysql:8.0
# Connect
mysql -h 127.0.0.1 -u root -p
# Back up
docker exec mysql mysqldump -u root -psecret myapp > backup.sql
Best Practices
- Use a named volume: For persistent data
- Environment variables: For configuration
- Health check: To make sure MySQL is ready
- Back up regularly: For data safety
Conclusion
MySQL in Docker is easy to set up. Use a named volume for persistent data and environment variables for configuration.