From 66c5397a2f2dfc1210bfecb017e42fe17b196dc3 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:25:40 +0530 Subject: [PATCH 1/9] Update Dockerfiles to make images lighter and add sbt-alpine image --- docker/lila-fishnet.Dockerfile | 2 +- docker/lila-ws.Dockerfile | 4 +++- docker/lila.Dockerfile | 2 +- docker/sbt-alpine.Dockerfile | 35 ++++++++++++++++++++++++++++++++++ docker/ui.Dockerfile | 4 +++- 5 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 docker/sbt-alpine.Dockerfile diff --git a/docker/lila-fishnet.Dockerfile b/docker/lila-fishnet.Dockerfile index 53c72a14..ad8542e3 100644 --- a/docker/lila-fishnet.Dockerfile +++ b/docker/lila-fishnet.Dockerfile @@ -1,4 +1,4 @@ -FROM sbtscala/scala-sbt:eclipse-temurin-jammy-21.0.2_13_1.9.9_3.4.0 +FROM sbt-alpine ENV CONFIG_FORCE_kamon_influxdb_authentication_token="secret" ENV CONFIG_FORCE_kamon_influxdb_hostname="influxdb" diff --git a/docker/lila-ws.Dockerfile b/docker/lila-ws.Dockerfile index 99622649..f1b05148 100644 --- a/docker/lila-ws.Dockerfile +++ b/docker/lila-ws.Dockerfile @@ -1,4 +1,6 @@ -FROM sbtscala/scala-sbt:eclipse-temurin-jammy-21.0.2_13_1.9.9_3.4.0 +FROM sbt-alpine + +RUN apk add --no-cache bash WORKDIR /lila-ws diff --git a/docker/lila.Dockerfile b/docker/lila.Dockerfile index 6e43a622..e4fdb629 100644 --- a/docker/lila.Dockerfile +++ b/docker/lila.Dockerfile @@ -1,4 +1,4 @@ -FROM sbtscala/scala-sbt:eclipse-temurin-jammy-21.0.2_13_1.9.9_3.4.0 +FROM sbt-alpine WORKDIR /lila diff --git a/docker/sbt-alpine.Dockerfile b/docker/sbt-alpine.Dockerfile new file mode 100644 index 00000000..5f6ea943 --- /dev/null +++ b/docker/sbt-alpine.Dockerfile @@ -0,0 +1,35 @@ +# Use a multi-stage build +FROM eclipse-temurin:21.0.2_13-jdk-alpine as builder + +ARG SCALA_VERSION=3.4.0 +ARG SBT_VERSION=1.9.9 +ENV SCALA_HOME=/usr/share/scala + +# Combine RUN commands and remove unnecessary files +RUN apk add --no-cache --virtual=.build-dependencies wget ca-certificates bash curl bc && \ + cd "/tmp" && \ + wget "https://github.com/lampepfl/dotty/releases/download/${SCALA_VERSION}/scala3-${SCALA_VERSION}.tar.gz" && \ + tar xzf "scala3-${SCALA_VERSION}.tar.gz" && \ + mkdir "${SCALA_HOME}" && \ + rm "/tmp/scala3-${SCALA_VERSION}/bin/"*.bat && \ + mv "/tmp/scala3-${SCALA_VERSION}/bin" "/tmp/scala3-${SCALA_VERSION}/lib" "${SCALA_HOME}" && \ + ln -s "${SCALA_HOME}/bin/"* "/usr/bin/" && \ + update-ca-certificates && \ + scala -version && \ + scalac -version && \ + curl -fsL https://github.com/sbt/sbt/releases/download/v$SBT_VERSION/sbt-$SBT_VERSION.tgz | tar xfz - -C /usr/local && \ + $(mv /usr/local/sbt-launcher-packaging-$SBT_VERSION /usr/local/sbt || true) && \ + ln -s /usr/local/sbt/bin/* /usr/local/bin/ && \ + sbt -Dsbt.rootdir=true -batch sbtVersion && \ + apk del .build-dependencies && \ + rm -rf "/tmp/"* && \ + rm -rf /var/cache/apk/* + +# Start a new stage for the final image +FROM eclipse-temurin:21.0.2_13-jdk-alpine + +COPY --from=builder /usr/share/scala /usr/share/scala +COPY --from=builder /usr/local/sbt /usr/local/sbt +COPY --from=builder /usr/local/bin/sbt /usr/local/bin/sbt + +WORKDIR /root \ No newline at end of file diff --git a/docker/ui.Dockerfile b/docker/ui.Dockerfile index 09aa9572..743be10b 100644 --- a/docker/ui.Dockerfile +++ b/docker/ui.Dockerfile @@ -1,4 +1,6 @@ -FROM node:20.11.1-bookworm +FROM node:20.11.1-bookworm-slim + +RUN apt update && apt install -y git && apt clean RUN git config --global --add safe.directory /chessground RUN git config --global --add safe.directory /lila From 9fe39b1b962cf2010bf8a2eefb7c9914bc9c6845 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:35:24 +0530 Subject: [PATCH 2/9] Add build step for sbt-alpine image and remove it afterwards --- lila-docker | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lila-docker b/lila-docker index 7e93931b..35201d2c 100755 --- a/lila-docker +++ b/lila-docker @@ -3,9 +3,16 @@ run_setup() { rust_cmd setup + # build sbt-alpine image locally + docker build -f docker/sbt-alpine.Dockerfile . -t sbt-alpine + docker compose build docker compose --profile utils build docker compose up -d + + # we can now remove the sbt-alpine image + docker rmi sbt-alpine + run_ui_build --update setup_bbppairings From be175abfc8a7b5deec3feac5e9914b787997e814 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:42:58 +0530 Subject: [PATCH 3/9] Add bash to lila docker image --- docker/lila.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/lila.Dockerfile b/docker/lila.Dockerfile index e4fdb629..7768325e 100644 --- a/docker/lila.Dockerfile +++ b/docker/lila.Dockerfile @@ -1,5 +1,7 @@ FROM sbt-alpine +RUN apk add --no-cache bash + WORKDIR /lila ENTRYPOINT ./lila run From 6c97f048a4b24e94f6f5870f32fef58bab0271af Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:04:22 +0530 Subject: [PATCH 4/9] Add build step for sbt-alpine image and remove it after build in build_all_profiles --- lila-docker | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lila-docker b/lila-docker index 35201d2c..9e675af9 100755 --- a/lila-docker +++ b/lila-docker @@ -46,8 +46,15 @@ all_profiles() { } build_all_profiles() { + + # build sbt-alpine image locally + docker build -f docker/sbt-alpine.Dockerfile . -t sbt-alpine + COMPOSE_PROFILES=$(all_profiles) docker compose pull COMPOSE_PROFILES=$(all_profiles) docker compose build + + # we can now remove the sbt-alpine image + docker rmi sbt-alpine } run_ui_build() { From 228d2d7509c373b0215219df9fd1ca8ecee5dd73 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:32:55 +0530 Subject: [PATCH 5/9] Remove empty line in build_all_profiles function --- lila-docker | 1 - 1 file changed, 1 deletion(-) diff --git a/lila-docker b/lila-docker index 3d08accb..51b04e27 100755 --- a/lila-docker +++ b/lila-docker @@ -46,7 +46,6 @@ all_profiles() { } build_all_profiles() { - # build sbt-alpine image locally docker build -f docker/sbt-alpine.Dockerfile . -t sbt-alpine From a17a8a256b62b9e9368e937112614756c76f098a Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:55:25 +0530 Subject: [PATCH 6/9] Update Dockerfiles to remove unnecessary bash installation --- docker/lila-ws.Dockerfile | 2 -- docker/lila.Dockerfile | 2 -- docker/sbt-alpine.Dockerfile | 1 + 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docker/lila-ws.Dockerfile b/docker/lila-ws.Dockerfile index f1b05148..8067eeba 100644 --- a/docker/lila-ws.Dockerfile +++ b/docker/lila-ws.Dockerfile @@ -1,7 +1,5 @@ FROM sbt-alpine -RUN apk add --no-cache bash - WORKDIR /lila-ws ENTRYPOINT sbt run -Dconfig.file=/lila-ws.conf diff --git a/docker/lila.Dockerfile b/docker/lila.Dockerfile index 7768325e..e4fdb629 100644 --- a/docker/lila.Dockerfile +++ b/docker/lila.Dockerfile @@ -1,7 +1,5 @@ FROM sbt-alpine -RUN apk add --no-cache bash - WORKDIR /lila ENTRYPOINT ./lila run diff --git a/docker/sbt-alpine.Dockerfile b/docker/sbt-alpine.Dockerfile index 5f6ea943..874ea949 100644 --- a/docker/sbt-alpine.Dockerfile +++ b/docker/sbt-alpine.Dockerfile @@ -28,6 +28,7 @@ RUN apk add --no-cache --virtual=.build-dependencies wget ca-certificates bash c # Start a new stage for the final image FROM eclipse-temurin:21.0.2_13-jdk-alpine +COPY --from=builder /bin/bash /bin/bash COPY --from=builder /usr/share/scala /usr/share/scala COPY --from=builder /usr/local/sbt /usr/local/sbt COPY --from=builder /usr/local/bin/sbt /usr/local/bin/sbt From 60b533916b9d945051b40d30eba1e16497ea491b Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:58:33 +0530 Subject: [PATCH 7/9] Update Alpine Dockerfile to include bash package --- docker/sbt-alpine.Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/sbt-alpine.Dockerfile b/docker/sbt-alpine.Dockerfile index 874ea949..3525fe7d 100644 --- a/docker/sbt-alpine.Dockerfile +++ b/docker/sbt-alpine.Dockerfile @@ -28,7 +28,8 @@ RUN apk add --no-cache --virtual=.build-dependencies wget ca-certificates bash c # Start a new stage for the final image FROM eclipse-temurin:21.0.2_13-jdk-alpine -COPY --from=builder /bin/bash /bin/bash +RUN apk add --no-cache bash + COPY --from=builder /usr/share/scala /usr/share/scala COPY --from=builder /usr/local/sbt /usr/local/sbt COPY --from=builder /usr/local/bin/sbt /usr/local/bin/sbt From 655ece2020cfb9be1ff3c6c8656510485a6054b6 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Fri, 29 Mar 2024 14:28:35 +0530 Subject: [PATCH 8/9] Replace local sbt-alpine with image on docker hub and make picfit to stage to reduce size --- docker/lila-fishnet.Dockerfile | 2 +- docker/lila-search.Dockerfile | 2 +- docker/lila-ws.Dockerfile | 2 +- docker/lila.Dockerfile | 2 +- docker/picfit.Dockerfile | 15 +++++++++----- docker/sbt-alpine.Dockerfile | 37 ---------------------------------- lila-docker | 12 ----------- 7 files changed, 14 insertions(+), 58 deletions(-) delete mode 100644 docker/sbt-alpine.Dockerfile diff --git a/docker/lila-fishnet.Dockerfile b/docker/lila-fishnet.Dockerfile index ad8542e3..78f151c7 100644 --- a/docker/lila-fishnet.Dockerfile +++ b/docker/lila-fishnet.Dockerfile @@ -1,4 +1,4 @@ -FROM sbt-alpine +FROM sbtscala/scala-sbt:eclipse-temurin-alpine-21.0.2_13_1.9.9_3.4.0 ENV CONFIG_FORCE_kamon_influxdb_authentication_token="secret" ENV CONFIG_FORCE_kamon_influxdb_hostname="influxdb" diff --git a/docker/lila-search.Dockerfile b/docker/lila-search.Dockerfile index a75cd49b..1a91b283 100644 --- a/docker/lila-search.Dockerfile +++ b/docker/lila-search.Dockerfile @@ -1,4 +1,4 @@ -FROM sbtscala/scala-sbt:eclipse-temurin-jammy-21.0.2_13_1.9.9_2.13.13 +FROM sbtscala/scala-sbt:eclipse-temurin-alpine-21.0.2_13_1.9.9_2.13.13 WORKDIR /lila-search diff --git a/docker/lila-ws.Dockerfile b/docker/lila-ws.Dockerfile index 8067eeba..aa3698e1 100644 --- a/docker/lila-ws.Dockerfile +++ b/docker/lila-ws.Dockerfile @@ -1,4 +1,4 @@ -FROM sbt-alpine +FROM sbtscala/scala-sbt:eclipse-temurin-alpine-21.0.2_13_1.9.9_3.4.0 WORKDIR /lila-ws diff --git a/docker/lila.Dockerfile b/docker/lila.Dockerfile index e4fdb629..3b70b82a 100644 --- a/docker/lila.Dockerfile +++ b/docker/lila.Dockerfile @@ -1,4 +1,4 @@ -FROM sbt-alpine +FROM sbtscala/scala-sbt:eclipse-temurin-alpine-21.0.2_13_1.9.9_3.4.0 WORKDIR /lila diff --git a/docker/picfit.Dockerfile b/docker/picfit.Dockerfile index e8bde8a4..c800be0a 100644 --- a/docker/picfit.Dockerfile +++ b/docker/picfit.Dockerfile @@ -1,13 +1,18 @@ -FROM golang:1.22.1-alpine3.19 +# Build stage +FROM golang:1.22.1-alpine3.19 AS build RUN apk --no-cache add git make -COPY assets/coach.png /uploads/coach.png -COPY assets/streamer.png /uploads/streamer.png - WORKDIR /opt RUN git clone --depth 1 https://github.com/thoas/picfit.git RUN make -C /opt/picfit build -ENTRYPOINT /opt/picfit/bin/picfit -c /mnt/config.json +# Runtime stage +FROM alpine:3.19 + +COPY --from=build /opt/picfit/bin/picfit /picfit +COPY assets/coach.png /uploads/coach.png +COPY assets/streamer.png /uploads/streamer.png + +ENTRYPOINT ["/picfit", "-c", "/mnt/config.json"] \ No newline at end of file diff --git a/docker/sbt-alpine.Dockerfile b/docker/sbt-alpine.Dockerfile deleted file mode 100644 index 3525fe7d..00000000 --- a/docker/sbt-alpine.Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# Use a multi-stage build -FROM eclipse-temurin:21.0.2_13-jdk-alpine as builder - -ARG SCALA_VERSION=3.4.0 -ARG SBT_VERSION=1.9.9 -ENV SCALA_HOME=/usr/share/scala - -# Combine RUN commands and remove unnecessary files -RUN apk add --no-cache --virtual=.build-dependencies wget ca-certificates bash curl bc && \ - cd "/tmp" && \ - wget "https://github.com/lampepfl/dotty/releases/download/${SCALA_VERSION}/scala3-${SCALA_VERSION}.tar.gz" && \ - tar xzf "scala3-${SCALA_VERSION}.tar.gz" && \ - mkdir "${SCALA_HOME}" && \ - rm "/tmp/scala3-${SCALA_VERSION}/bin/"*.bat && \ - mv "/tmp/scala3-${SCALA_VERSION}/bin" "/tmp/scala3-${SCALA_VERSION}/lib" "${SCALA_HOME}" && \ - ln -s "${SCALA_HOME}/bin/"* "/usr/bin/" && \ - update-ca-certificates && \ - scala -version && \ - scalac -version && \ - curl -fsL https://github.com/sbt/sbt/releases/download/v$SBT_VERSION/sbt-$SBT_VERSION.tgz | tar xfz - -C /usr/local && \ - $(mv /usr/local/sbt-launcher-packaging-$SBT_VERSION /usr/local/sbt || true) && \ - ln -s /usr/local/sbt/bin/* /usr/local/bin/ && \ - sbt -Dsbt.rootdir=true -batch sbtVersion && \ - apk del .build-dependencies && \ - rm -rf "/tmp/"* && \ - rm -rf /var/cache/apk/* - -# Start a new stage for the final image -FROM eclipse-temurin:21.0.2_13-jdk-alpine - -RUN apk add --no-cache bash - -COPY --from=builder /usr/share/scala /usr/share/scala -COPY --from=builder /usr/local/sbt /usr/local/sbt -COPY --from=builder /usr/local/bin/sbt /usr/local/bin/sbt - -WORKDIR /root \ No newline at end of file diff --git a/lila-docker b/lila-docker index 51b04e27..b159c07c 100755 --- a/lila-docker +++ b/lila-docker @@ -3,16 +3,10 @@ run_setup() { rust_cmd setup - # build sbt-alpine image locally - docker build -f docker/sbt-alpine.Dockerfile . -t sbt-alpine - docker compose build docker compose --profile utils build docker compose up -d - # we can now remove the sbt-alpine image - docker rmi sbt-alpine - run_ui_build --update setup_bbppairings @@ -46,14 +40,8 @@ all_profiles() { } build_all_profiles() { - # build sbt-alpine image locally - docker build -f docker/sbt-alpine.Dockerfile . -t sbt-alpine - COMPOSE_PROFILES=$(all_profiles) docker compose pull COMPOSE_PROFILES=$(all_profiles) docker compose build - - # we can now remove the sbt-alpine image - docker rmi sbt-alpine } run_ui_build() { From 1600156d84f47be86ebbcd0058f17b189cff3a22 Mon Sep 17 00:00:00 2001 From: Carbrex <95964955+Carbrex@users.noreply.github.com> Date: Fri, 29 Mar 2024 15:11:57 +0530 Subject: [PATCH 9/9] Update Dockerfile to use carbrex/thoas-picfit image --- docker/picfit.Dockerfile | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/docker/picfit.Dockerfile b/docker/picfit.Dockerfile index c800be0a..f011b938 100644 --- a/docker/picfit.Dockerfile +++ b/docker/picfit.Dockerfile @@ -1,17 +1,5 @@ -# Build stage -FROM golang:1.22.1-alpine3.19 AS build +FROM carbrex/thoas-picfit:latest -RUN apk --no-cache add git make - -WORKDIR /opt - -RUN git clone --depth 1 https://github.com/thoas/picfit.git -RUN make -C /opt/picfit build - -# Runtime stage -FROM alpine:3.19 - -COPY --from=build /opt/picfit/bin/picfit /picfit COPY assets/coach.png /uploads/coach.png COPY assets/streamer.png /uploads/streamer.png