diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..66cf0d8a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM docker.io/library/golang:1.20.6-alpine3.18 +WORKDIR /src +RUN apk add --no-cache build-base sassc +COPY go.sum go.mod ./ +RUN go mod download && go mod tidy +COPY . /src +RUN set -x \ + && mkdir -p web/static/css \ + && for f in web/scss/*.scss; do sassc --style nested --sourcemap=inline -l "$f" "web/static/css/$(basename $f .scss).css";done \ + && go build -v -o bin/userstyles-fonts cmd/userstyles-fonts/main.go \ + && go build -v -o bin/userstyles-ts cmd/userstyles-ts/main.go \ + && go build -v -o bin/userstyles -tags "fts5" cmd/userstyles-world/main.go + +FROM docker.io/library/alpine:3.18 +RUN apk add --no-cache vips-tools +WORKDIR /data +ENV DATA_DIR=/data +ENV DB=userstyles.db +COPY --from=0 /src/bin/ /usr/local/bin/ +COPY docker-entrypoint.sh /usr/local/bin/ +ENTRYPOINT ["docker-entrypoint.sh"] +CMD ["userstyles"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..c6c515de --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,7 @@ +version: "3.9" +services: + app: + build: + dockerfile: Dockerfile + context: . + ports: ["3000:3000"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 00000000..f9629b54 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -Eeo pipefail +set -x +[ -f "${DATA_DIR}/${DB}" ] || DB_DROP=1 DB_MIGRATE=1 userstyles +exec "$@"