feat: add Docker Compose setup for Coolify deployment
- Dockerfile: php:8.2-apache with pdo_mysql, curl, mod_rewrite - docker-compose.yml: app + MySQL 8.0, healthchecks, named volumes - .dockerignore: exclude .env, .git, uploads, docs - .gitignore: add .env Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
.env
|
||||||
|
.git
|
||||||
|
uploads/*
|
||||||
|
!uploads/.gitkeep
|
||||||
|
docs/
|
||||||
|
*.md
|
||||||
|
localguide-DESIGN.md
|
||||||
|
COOLIFY_DOCKER_COMPOSE_KNOWLEDGE.md
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
uploads/*
|
uploads/*
|
||||||
!uploads/.gitkeep
|
!uploads/.gitkeep
|
||||||
localguide-DESIGN.md
|
localguide-DESIGN.md
|
||||||
|
.env
|
||||||
|
|||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
FROM php:8.2-apache
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
curl \
|
||||||
|
&& docker-php-ext-install pdo_mysql \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN a2enmod rewrite \
|
||||||
|
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf \
|
||||||
|
&& sed -i 's|AllowOverride None|AllowOverride All|g' /etc/apache2/apache2.conf
|
||||||
|
|
||||||
|
COPY . /var/www/html/
|
||||||
|
|
||||||
|
RUN mkdir -p /var/www/html/uploads \
|
||||||
|
&& chown -R www-data:www-data /var/www/html \
|
||||||
|
&& chmod 755 /var/www/html \
|
||||||
|
&& chmod 777 /var/www/html/uploads
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
environment:
|
||||||
|
DB_HOST: "${DB_HOST:-db}"
|
||||||
|
DB_NAME: "${DB_NAME:-webgis_jalan}"
|
||||||
|
DB_USER: "${DB_USER:-webgis}"
|
||||||
|
DB_PASS: "${DB_PASS:?Set DB_PASS in Coolify}"
|
||||||
|
volumes:
|
||||||
|
- uploads-data:/var/www/html/uploads
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1/ >/dev/null || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mysql:8.0
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: "${DB_NAME:-webgis_jalan}"
|
||||||
|
MYSQL_USER: "${DB_USER:-webgis}"
|
||||||
|
MYSQL_PASSWORD: "${DB_PASS:?Set DB_PASS in Coolify}"
|
||||||
|
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD:?Set DB_ROOT_PASSWORD in Coolify}"
|
||||||
|
volumes:
|
||||||
|
- mysql-data:/var/lib/mysql
|
||||||
|
- ./schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "mysqladmin ping -h localhost -uroot -p\"$${MYSQL_ROOT_PASSWORD}\" --silent"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 20
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql-data:
|
||||||
|
uploads-data:
|
||||||
Reference in New Issue
Block a user