koh d6aabd65d1
Cập nhật cấu hình MySQL và Wire provider
- Điều chỉnh cấu hình MySQL trong docker-compose.prod.yml để sử dụng root user
- Loại bỏ cấu hình người dùng MySQL không cần thiết
- Cập nhật hàm ProvideDB trong wire.go để trả về global database instance
- Làm sạch và tối ưu hóa cấu hình kết nối cơ sở dữ liệu
2025-03-03 17:17:53 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00
2025-03-02 14:59:34 +07:00

Senflow App

Ứng dụng Go với Docker cho môi trường development và production.

Cấu Trúc Thư Mục

.
├── Dockerfile.dev
├── Dockerfile.prod
├── docker-compose.dev.yml
├── docker-compose.prod.yml
├── .env.dev
├── .env.prod
├── nginx/
│   └── conf.d/
│       └── default.conf
├── prometheus/
│   └── prometheus.yml
└── scripts/
    └── backup.sh

Yêu Cầu Hệ Thống

  • Docker
  • Docker Compose
  • Go 1.21 trở lên

Môi Trường Development

Cấu Hình

  1. Tạo file .env.dev:
PORT=8080
APP_ENV=development
BLUEPRINT_DB_HOST=mysql_bp
BLUEPRINT_DB_PORT=3306
BLUEPRINT_DB_DATABASE=blueprint
BLUEPRINT_DB_USERNAME=root
BLUEPRINT_DB_PASSWORD=root
BLUEPRINT_DB_ROOT_PASSWORD=root
BLUEPRINT_DB_MAX_IDLE_CONNS=10
BLUEPRINT_DB_MAX_OPEN_CONNS=100
BLUEPRINT_DB_CONN_MAX_LIFETIME=1h
LOGGER_LOG_LEVEL=debug
LOGGER_FILE_LOG_NAME=logs/app.log
LOGGER_MAX_SIZE=100
LOGGER_MAX_BACKUPS=3
LOGGER_MAX_AGE=28
LOGGER_COMPRESS=true

Chạy Ứng Dụng

# Build và chạy
docker-compose -f docker-compose.dev.yml up --build

# Chạy ở chế độ detached
docker-compose -f docker-compose.dev.yml up -d

# Xem logs
docker-compose -f docker-compose.dev.yml logs -f

# Dừng ứng dụng
docker-compose -f docker-compose.dev.yml down

Môi Trường Production

Cấu Hình

  1. Tạo file .env.prod:
PORT=8080
APP_ENV=production
BLUEPRINT_DB_HOST=mysql_bp
BLUEPRINT_DB_PORT=3306
BLUEPRINT_DB_DATABASE=blueprint
BLUEPRINT_DB_USERNAME=root
BLUEPRINT_DB_PASSWORD=your_secure_password
BLUEPRINT_DB_ROOT_PASSWORD=your_secure_root_password
BLUEPRINT_DB_MAX_IDLE_CONNS=10
BLUEPRINT_DB_MAX_OPEN_CONNS=100
BLUEPRINT_DB_CONN_MAX_LIFETIME=1h
LOGGER_LOG_LEVEL=info
LOGGER_FILE_LOG_NAME=logs/app.log
LOGGER_MAX_SIZE=1000
LOGGER_MAX_BACKUPS=7
LOGGER_MAX_AGE=30
LOGGER_COMPRESS=true
GRAFANA_ADMIN_PASSWORD=your_secure_grafana_password

Tính Năng Production

  1. Load Balancing

    • Nginx làm load balancer
    • 3 instance của ứng dụng
    • Health check tự động
    • SSL/TLS support
  2. Monitoring

    • Prometheus cho metrics collection
    • Grafana cho visualization
    • Metrics từ app và MySQL
    • Persistent storage cho dữ liệu monitoring
  3. Backup

    • Backup MySQL tự động hàng ngày
    • Nén backup với gzip
    • Giữ backup trong 7 ngày
    • Volume riêng cho backups
  4. High Availability

    • Health checks cho tất cả services
    • Auto-restart policy
    • Network isolation
    • Replica management

Chạy Production

# Build và chạy
docker-compose -f docker-compose.prod.yml --env-file .env.prod up --build -d

# Xem logs
docker-compose -f docker-compose.prod.yml logs -f

# Dừng services
docker-compose -f docker-compose.prod.yml down

Endpoints

Bảo Mật

  1. SSL/TLS

    • Thêm certificates vào nginx/ssl/
    • Cấu hình SSL trong Nginx
  2. Mật Khẩu

    • Thay đổi mật khẩu trong .env.prod
    • Sử dụng mật khẩu mạnh
    • Không commit file .env
  3. Network

    • Cấu hình firewall
    • Giới hạn ports
    • Sử dụng internal networks

Monitoring

  1. Grafana Dashboards

    • App metrics
    • MySQL metrics
    • System metrics
  2. Alerts

    • Cấu hình trong Prometheus
    • Thông báo qua email/Slack

Backup & Recovery

  1. Backup

    • Tự động hàng ngày
    • Nén với gzip
    • Giữ 7 ngày
  2. Recovery

    # Restore từ backup
    gunzip -c backup_YYYYMMDD_HHMMSS.sql.gz | mysql -h mysql_bp -u root -p blueprint
    

Troubleshooting

  1. Logs

    # App logs
    docker-compose -f docker-compose.prod.yml logs app
    
    # MySQL logs
    docker-compose -f docker-compose.prod.yml logs mysql_bp
    
    # Nginx logs
    docker-compose -f docker-compose.prod.yml logs nginx
    
  2. Health Checks

Maintenance

  1. Update

    # Pull latest images
    docker-compose -f docker-compose.prod.yml pull
    
    # Rebuild và restart
    docker-compose -f docker-compose.prod.yml up -d --build
    
  2. Cleanup

    # Xóa unused volumes
    docker volume prune
    
    # Xóa old images
    docker image prune
    
Description
Migrated from GitHub: gin_template
Readme 73 KiB
Languages
Go 94%
Makefile 4.5%
Shell 1.5%