Java 26 and Docker Compose are required.
docker compose up -d mysql
./gradlew bootRunLocal MySQL defaults live in compose.yaml. Override them with
LOCAL_MYSQL_PASSWORD and LOCAL_MYSQL_ROOT_PASSWORD when needed.
- API:
https://checkin-api.ject.kr - Health check:
https://checkin-api.ject.kr/actuator/health - Runtime: Docker Compose on the JECT Lightsail instance
- Deployment directory:
/opt/ject-checkin - Database: MySQL 8.4 Docker container on the same Lightsail instance
Production configuration is supplied through /opt/ject-checkin/.env. Never
commit that file. Required variables are documented in .env.example.
Build and verify:
./gradlew clean test bootJar
docker build -t ject-checkin-server:latest .Start the server on Lightsail:
cd /opt/ject-checkin
sudo docker compose -f compose.prod.yaml up -dNginx terminates HTTPS and proxies only to 127.0.0.1:8080. Certbot manages
the Let's Encrypt certificate and automatic renewal. MySQL is not published to
the host network and is reachable only through the private Compose network.
Production deployments run automatically after a successful merge to main.
Operational monitoring, alert thresholds, and log commands are documented in
docs/operations.md.