Perbaikan docker-compose
Perbaikan docker-compose
Section titled “Perbaikan docker-compose”Port 443 dipublikasikan, tiga volume HTTPS ditambahkan.
Berkas: alat/hari-3/Praktik 11/perbaikan/docker-compose.yml
# =====================================================================# Versi perbaikan dari Praktik 11/file latihan/docker-compose.yml## Tiga perubahan, semuanya pada service nginx:# 1. Port 443 dipublikasikan. Tanpa ini Nginx mendengarkan di dalam# container, tetapi host tidak meneruskan trafik ke sana.# 2. Tiga volume ditambahkan:# ./certbot-webroot -> /var/www/certbot berkas challenge ACME# ./tls -> /etc/nginx/tls server block 443# /etc/letsencrypt -> /etc/letsencrypt sertifikat# 3. Tidak ada perubahan pada service nextjs dan geoserver.## Dua volume pertama relatif terhadap folder repository DI VM, yaitu# /opt/webgis/app. Keduanya sudah dibuat oleh Tahap 6 modul dengan# perintah: mkdir -p certbot-webroot tls## Volume ketiga memakai jalur absolut karena menunjuk lokasi di VM, bukan# di dalam repository. Tanpa volume ini, nginx -t gagal dengan pesan# bahwa berkas sertifikat tidak ditemukan, walaupun sertifikatnya ada.## Cara pakai: ganti docker-compose.yml di repository fork dengan berkas# ini, lalu jalankan git pull --ff-only di VM dan buat ulang container# nginx. Berkas ini masih memakai ${NEXTJS_IMAGE} dan# ${GEOSERVER_ADMIN_PASSWORD} dari .env, sama seperti berkas aslinya,# jadi .env harus sudah terisi sebelum docker compose dijalankan.# =====================================================================
services: nextjs: image: ${NEXTJS_IMAGE:?Set NEXTJS_IMAGE in .env} container_name: nextjs_portal env_file: - .env depends_on: - geoserver networks: - app-network restart: unless-stopped
geoserver: image: kartoza/geoserver:2.24.1 container_name: geoserver_app environment: - INITIAL_MEMORY=512m - MAXIMUM_MEMORY=2048m - GEOSERVER_ADMIN_USER=admin # Diisi dari .env supaya kata sandi tidak tertulis di repository public. - GEOSERVER_ADMIN_PASSWORD=${GEOSERVER_ADMIN_PASSWORD} - GEOSERVER_CORS_ENABLED=true - GEOSERVER_CORS_ALLOWED_ORIGINS=* volumes: - ./geoserver-data:/opt/geoserver/data_dir networks: - app-network restart: unless-stopped
nginx: image: nginx:1.27-alpine container_name: nginx_proxy depends_on: - nextjs - geoserver ports: - "80:80" - "443:443" # WAJIB, kalau tidak HTTPS tak terjangkau volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./certbot-webroot:/var/www/certbot:ro # webroot ACME - ./tls:/etc/nginx/tls:ro # server block 443 - /etc/letsencrypt:/etc/letsencrypt:ro # sertifikat Let's Encrypt networks: - app-network restart: unless-stopped
networks: app-network: driver: bridge