DockerAdvanced
Production Deployment
VPS-এ compose deploy, reverse proxy, TLS, update flow — বাংলায়।
12টি অংশবাংলা ভাষায়
Docker-এ অ্যাপ deploy করার জনপ্রিয় উপায় — একটি VPS (DigitalOcean, Hetzner, AWS EC2, বা Bangladesh-এর hosting) সেটআপ করে সেখানে compose-দিয়ে চালানো।
Server সেটআপ
Remote server (SSH)bash
bash
# server-এ Docker install
curl -fsSL https://get.docker.com | sh
# systemd-এ enable
sudo systemctl enable --now dockerCompose file uptime
compose.prod.yml (server-এ)yaml
yaml
services:
api:
image: ghcr.io/myorg/api:1.4.0 # registry থেকে pull
restart: unless-stopped
env_file:
- .env.production
depends_on:
- mongo
ports:
- "3000:3000"
mongo:
image: mongo:7
restart: unless-stopped
volumes:
- mongo-data:/data/db
nginx:
image: nginx:1.27-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- api
volumes:
mongo-data:Reverse proxy (nginx.conf)
nginx.confnginx
nginx
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://api:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Update flow
Zero-downtime deploybash
bash
# server-এ
git pull # config ঠিক রাখতে
docker compose -f compose.prod.yml pull
docker compose -f compose.prod.yml up -d
docker compose -f compose.prod.yml psTLS (Let's Encrypt)
certbot + nginxbash
bash
# domain pointed করার পর
sudo apt install certbot
sudo certbot --nginx -d mydomain.com
# renew auto
sudo certbot renew --dry-runআলাদা hostে DB?
বড় production-এ database আলাদা managed service (Atlas, RDS) এ রাখা ভালো — তবে ছোট project-এ container DB-ই ঠিক। নিয়মিত mongodump/pg_dump ব্যাকআপ নিতে ভুলবেন না।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।