From b961753dd261f3a812cdfb27ff98f973ef6ac612 Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Sun, 30 Jul 2023 18:55:38 +0100 Subject: [PATCH] perf(forgejo): optimise docker build - Mount the context directory to the build container to copy files over to their destinations. - Add .dockerignore to minimize the context. --- templates/forgejo/.dockerignore.gotmpl | 5 +++++ templates/forgejo/Dockerfile.gotmpl | 31 +++++++++++++------------- 2 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 templates/forgejo/.dockerignore.gotmpl diff --git a/templates/forgejo/.dockerignore.gotmpl b/templates/forgejo/.dockerignore.gotmpl new file mode 100644 index 0000000..94424a9 --- /dev/null +++ b/templates/forgejo/.dockerignore.gotmpl @@ -0,0 +1,5 @@ +* +!app.ini +!dynamic_git.yaml +!entrypoint.sh +!forgejo-{{ .Forgejo.Version }}-linux-amd64 diff --git a/templates/forgejo/Dockerfile.gotmpl b/templates/forgejo/Dockerfile.gotmpl index 9dd0150..9980c96 100644 --- a/templates/forgejo/Dockerfile.gotmpl +++ b/templates/forgejo/Dockerfile.gotmpl @@ -11,7 +11,8 @@ ENV FORGEJO_WORK_DIR={{ .Forgejo.Work }} \ FORGEJO_VERSION={{ .Forgejo.Version }} \ HOME={{ .Forgejo.Home }} -RUN apk update && apk upgrade && apk --no-cache add \ +RUN --mount=type=bind,source=.,target=/packages \ + apk update && apk upgrade && apk --no-cache add \ asciidoctor \ bash \ ca-certificates \ @@ -21,26 +22,26 @@ RUN apk update && apk upgrade && apk --no-cache add \ gnupg \ && addgroup -S -g {{ .FlowGID }} flow \ && adduser -S -H -D -h {{ .Forgejo.Home }} -s /bin/bash -u {{ .Forgejo.LinuxUID }} -G flow git \ - && mkdir -p {{ .Forgejo.DataContainerDirectory }} {{ .Forgejo.Tmp }} \ + && mkdir -p {{ .Forgejo.DataContainerDirectory }} {{ .Forgejo.Tmp }} /flow/gitea/config \ && chown git {{ .Forgejo.DataContainerDirectory }} && chmod 0700 {{ .Forgejo.DataContainerDirectory }} \ - && chown git {{ .Forgejo.Tmp }} && chmod 0700 {{ .Forgejo.Tmp }} - -ADD --chown=root:root forgejo-{{ .Forgejo.Version }}-linux-amd64 {{ .Forgejo.Bin }} -ADD app.ini {{ .Forgejo.AppIni }} -ADD entrypoint.sh /usr/local/bin/entrypoint.sh -ADD --chown={{ .Forgejo.LinuxUID }}:{{ .FlowGID }} dynamic_git.yaml {{ .Forgejo.Tmp }}/ - -RUN chown -R {{ .Forgejo.LinuxUID }}:{{ .Forgejo.LinuxUID }} {{ .Forgejo.AppIni }} \ - && chmod 0400 {{ .Forgejo.AppIni }} \ + && chown git {{ .Forgejo.Tmp }} && chmod 0700 {{ .Forgejo.Tmp }} \ + && chown git /flow/gitea/config && chmod 0700 /flow/gitea/config \ + && cp /packages/forgejo-{{ .Forgejo.Version }}-linux-amd64 {{ .Forgejo.Bin }} \ && chmod a+x {{ .Forgejo.Bin }} \ - && chmod a+rx /usr/local/bin/entrypoint.sh + && cp /packages/app.ini {{ .Forgejo.AppIni }} \ + && chown {{ .Forgejo.LinuxUID }}:{{ .Forgejo.LinuxUID }} {{ .Forgejo.AppIni }} \ + && chmod 0400 {{ .Forgejo.AppIni }} \ + && cp /packages/entrypoint.sh /usr/local/bin/entrypoint \ + && chmod a+rx /usr/local/bin/entrypoint \ + && cp /packages/dynamic_git.yaml {{ .Forgejo.Tmp }}/dynamic_git.yaml \ + && chown {{ .Forgejo.LinuxUID }}:{{ .FlowGID }} {{ .Forgejo.Tmp }}/dynamic_git.yaml USER {{ .Forgejo.LinuxUID }}:{{ .FlowGID }} -WORKDIR /flow/gitea/data +WORKDIR {{ .Forgejo.Home }} -VOLUME ["/flow/gitea/data"] +VOLUME ["{{ .Forgejo.DataContainerDirectory }}"] -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +ENTRYPOINT ["entrypoint"] CMD []