diff options
Diffstat (limited to 'docker/Dockerfile')
| -rw-r--r-- | docker/Dockerfile | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 87884403..900c9e74 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,32 +1,52 @@ -FROM crystallang/crystal:0.36.1-alpine AS builder -RUN apk add --no-cache curl sqlite-static yaml-static +FROM crystallang/crystal:1.12.2-alpine AS builder + +RUN apk add --no-cache sqlite-static yaml-static + +ARG release + WORKDIR /invidious COPY ./shard.yml ./shard.yml COPY ./shard.lock ./shard.lock -RUN shards install && \ - curl -Lo ./lib/lsquic/src/lsquic/ext/liblsquic.a https://github.com/iv-org/lsquic-static-alpine/releases/download/v2.18.1/liblsquic.a +RUN shards install --production + COPY ./src/ ./src/ # TODO: .git folder is required for building – this is destructive. # See definition of CURRENT_BRANCH, CURRENT_COMMIT and CURRENT_VERSION. COPY ./.git/ ./.git/ -RUN crystal build ./src/invidious.cr \ - --static --warnings all \ - --link-flags "-lxml2 -llzma" -FROM alpine:latest -RUN apk add --no-cache librsvg ttf-opensans +# Required for fetching player dependencies +COPY ./scripts/ ./scripts/ +COPY ./assets/ ./assets/ +COPY ./videojs-dependencies.yml ./videojs-dependencies.yml + +RUN crystal spec --warnings all \ + --link-flags "-lxml2 -llzma" +RUN if [[ "${release}" == 1 ]] ; then \ + crystal build ./src/invidious.cr \ + --release \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + else \ + crystal build ./src/invidious.cr \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + fi + +FROM alpine:3.20 +RUN apk add --no-cache rsvg-convert ttf-opensans tini tzdata WORKDIR /invidious RUN addgroup -g 1000 -S invidious && \ adduser -u 1000 -S invidious -G invidious -COPY ./assets/ ./assets/ COPY --chown=invidious ./config/config.* ./config/ RUN mv -n config/config.example.yml config/config.yml -RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: postgres/' config/config.yml +RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: invidious-db/' config/config.yml COPY ./config/sql/ ./config/sql/ COPY ./locales/ ./locales/ +COPY --from=builder /invidious/assets ./assets/ COPY --from=builder /invidious/invidious . RUN chmod o+rX -R ./assets ./config ./locales EXPOSE 3000 USER invidious +ENTRYPOINT ["/sbin/tini", "--"] CMD [ "/invidious/invidious" ] |
