diff --git a/.gitignore b/.gitignore index b71b1ea..5d5985c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ Homestead.json Homestead.yaml Thumbs.db +coolify-deployment.md diff --git a/Dockerfile b/Dockerfile index 49ccb3e..4e335b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,12 @@ +# Stage 1: Build Frontend Assets (Vite) +FROM node:20-alpine AS assets-builder +WORKDIR /app +COPY package.json package-lock.json* ./ +RUN npm install +COPY . . +RUN npm run build + +# Stage 2: Final Application Image FROM php:8.3-cli RUN apt-get update \ @@ -10,6 +19,9 @@ COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /app COPY . . +# Copy built assets from assets-builder +COPY --from=assets-builder /app/public/build ./public/build + RUN composer install --no-interaction --no-progress --optimize-autoloader \ && chmod +x docker/entrypoint.sh @@ -17,3 +29,4 @@ EXPOSE 8000 ENTRYPOINT ["docker/entrypoint.sh"] CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"] + diff --git a/docker-compose.yml b/docker-compose.yml index 5babe53..118ee18 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,21 +2,22 @@ services: app: build: . ports: - - "8000:8000" + - "${PORT:-8000}:8000" environment: - APP_NAME: "WebGIS SPBU" - APP_ENV: local - APP_DEBUG: "true" - APP_URL: http://localhost:8000 + APP_NAME: "${APP_NAME:-WebGIS SPBU}" + APP_ENV: "${APP_ENV:-production}" + APP_DEBUG: "${APP_DEBUG:-false}" + APP_URL: "${APP_URL:-http://localhost:8000}" + APP_KEY: "${APP_KEY:-}" DB_CONNECTION: mysql - DB_HOST: db - DB_PORT: "3306" - DB_DATABASE: spbu_baru - DB_USERNAME: spbu - DB_PASSWORD: secret - SESSION_DRIVER: file - CACHE_STORE: file - QUEUE_CONNECTION: sync + DB_HOST: "${DB_HOST:-db}" + DB_PORT: "${DB_PORT:-3306}" + DB_DATABASE: "${DB_DATABASE:-spbu_baru}" + DB_USERNAME: "${DB_USERNAME:-spbu}" + DB_PASSWORD: "${DB_PASSWORD:-secret}" + SESSION_DRIVER: "${SESSION_DRIVER:-file}" + CACHE_STORE: "${CACHE_STORE:-file}" + QUEUE_CONNECTION: "${QUEUE_CONNECTION:-sync}" depends_on: db: condition: service_healthy @@ -24,17 +25,18 @@ services: db: image: mysql:8.0 environment: - MYSQL_DATABASE: spbu_baru - MYSQL_USER: spbu - MYSQL_PASSWORD: secret - MYSQL_ROOT_PASSWORD: rootsecret + MYSQL_DATABASE: "${DB_DATABASE:-spbu_baru}" + MYSQL_USER: "${DB_USERNAME:-spbu}" + MYSQL_PASSWORD: "${DB_PASSWORD:-secret}" + MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD:-rootsecret}" volumes: - spbu-mysql-data:/var/lib/mysql healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-prootsecret"] + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p${DB_ROOT_PASSWORD:-rootsecret}"] interval: 5s timeout: 5s retries: 20 volumes: spbu-mysql-data: +