diff --git a/apps/api/package.json b/apps/api/package.json index 60fd85a..155b859 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "dev": "pnpm --filter shared build && pnpm --filter db build && tsx watch src/server.ts", + "dev": "tsx watch src/server.ts", "build": "tsc", "start": "node dist/src/server.js", "test": "vitest" diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..92135eb --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,91 @@ +services: + caddy: + container_name: lila-caddy + image: caddy:2-alpine + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + restart: unless-stopped + depends_on: + api: + condition: service_healthy + networks: + - lila-network + + api: + container_name: lila-api + build: + context: . + dockerfile: ./apps/api/Dockerfile + target: runner + env_file: + - .env + restart: unless-stopped + healthcheck: + test: + ["CMD-SHELL", "wget -qO- http://localhost:3000/api/health || exit 1"] + interval: 5s + timeout: 3s + retries: 5 + depends_on: + database: + condition: service_healthy + networks: + - lila-network + + web: + container_name: lila-web + build: + context: . + dockerfile: ./apps/web/Dockerfile + target: production + args: + VITE_API_URL: https://api.lilastudy.com + restart: unless-stopped + networks: + - lila-network + + database: + container_name: lila-database + image: postgres:18.3-alpine3.23 + env_file: + - .env + environment: + - PGDATA=/var/lib/postgresql/data + volumes: + - lila-db:/var/lib/postgresql/data + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - lila-network + + forgejo: + container_name: lila-forgejo + image: codeberg.org/forgejo/forgejo:11 + volumes: + - forgejo-data:/data + environment: + - USER_UID=1000 + - USER_GID=1000 + ports: + - "2222:22" + restart: unless-stopped + networks: + - lila-network + +networks: + lila-network: + +volumes: + lila-db: + caddy_data: + caddy_config: + forgejo-data: diff --git a/docker-compose.yml b/docker-compose.yml index e5deed4..5903fa6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,6 @@ services: volumes: - ./apps/api:/app/apps/api # Hot reload API code - ./packages/shared:/app/packages/shared # Hot reload shared - - ./packages/db:/app/packages/db - /app/node_modules restart: unless-stopped healthcheck: diff --git a/documentation/notes.md b/documentation/notes.md index 48673c8..7d1b801 100644 --- a/documentation/notes.md +++ b/documentation/notes.md @@ -17,10 +17,6 @@ WARNING! Your credentials are stored unencrypted in '/home/languagedev/.docker/c Configure a credential helper to remove this warning. See https://docs.docker.com/go/credential-store/ -### docker containers on startup? - -laptop: verify if docker containers run on startup (they shouldnt) - ### vps setup - monitoring and logging (eg via chrootkit or rkhunter, logwatch/monit => mails daily with summary)