diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7da0efe --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2024 Kaushlendra Pratap +# SPDX-License-Identifier: GPL-2.0-only +FROM golang:1.20 AS build + +WORKDIR /LicenseDb + +COPY go.mod go.sum ./ +RUN go mod download + +COPY cmd/ cmd/ +COPY pkg/ pkg/ +COPY docs/ docs/ + +RUN wget https://raw.githubusercontent.com/fossology/fossology/master/install/db/licenseRef.json -O licenseRef.json + +RUN CGO_ENABLED=0 GOOS=linux go build -a -o laas ./cmd/laas + +# Release Stage +FROM alpine:3.20 AS build-release + +COPY entrypoint.sh /entrypoint.sh + +RUN apk add --no-cache openssl bash \ + && chmod +x /entrypoint.sh + +WORKDIR /data + +COPY --from=build /LicenseDb/licenseRef.json /data/licenseRef.json +COPY --from=build /LicenseDb/laas /laas + +EXPOSE 8080 + +USER noroot:noroot + +ENTRYPOINT [ "/entrypoint.sh" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a0a7fe9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: 2024 Kaushlendra Pratap +# SPDX-License-Identifier: GPL-2.0-only +services: + licensedb: + container_name: licensedb + build: + context: . + environment: + DB_PASSWORD: fossy + DB_HOST: postgres + DB_PORT: 5432 + DB_USER: fossy + DB_NAME: fossology + POPULATE_DB: true + GIN_MODE: debug + ports: + - 8080:8080 + depends_on: + postgres: + condition: service_healthy + restart: always + networks: + - licensedb-network + postgres: + container_name: postgres + image: postgres:16 + environment: + POSTGRES_PASSWORD: fossy + POSTGRES_USER: fossy + POSTGRES_DB: fossology + ports: + - "5432:5432" + volumes: + - pgdata:/var/lib/postgresql/data + restart: always + healthcheck: + test: ["CMD-SHELL", "pg_isready --dbname $$POSTGRES_DB --username $$POSTGRES_USER"] + interval: 10s + timeout: 5s + retries: 5 + networks: + - licensedb-network +networks: + licensedb-network: + driver: bridge +volumes: + pgdata: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..092bec3 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2024 Kaushlendra Pratap +# SPDX-License-Identifier: GPL-2.0-only + +set -e + +db_host="${DB_HOST:-localhost}" +db_port="${DB_PORT:-5432}" +db_name="${DB_NAME:-fossology}" +db_user="${DB_USER:-fossy}" +db_password="${DB_PASSWORD:-fossy}" +populate_db="${POPULATE_DB:-true}" +data_file="/data/licenseRef.json" + +printf "TOKEN_HOUR_LIFESPAN=24\nAPI_SECRET=%s\n" $(openssl rand -hex 32) > .env + +/laas -host=$db_host -port=$db_port -user=$db_user -dbname=$db_name \ + -password=$db_password -datafile="$data_file" -populatedb=$populate_db \ No newline at end of file