# A minimal GitBucket. # # Volumes: # /gitbucket - GitBucket persistent data. Precreate to prevent Docker creating with root privs. # /opt/gitbucket - location of gitbucket.war (parent directory) # # Build with: # >docker build . # # Run with: # >docker run --detach --publish 8080:8080 --volume data_location:/gitbucket --volume war_location:/opt/gitbucket -e GITBUCKET_PREFIX=/prefix # # Configuration changes can be made via environment variables, so override by supplying -e parameters (or an env file). # start with the Alpine Adoptium base FROM eclipse-temurin:11-alpine as jre-build # Java module dependencies found by unzipping WAR and running: # jdeps --class-path 'WEB-INF/classes,WEB-INF/lib/*,.' -recursive -summary . # generate a minimal JRE that includes only the necessary modules RUN $JAVA_HOME/bin/jlink \ --add-modules java.base,java.desktop,java.instrument,java.logging,java.management,java.naming,java.security.jgss,java.sql,java.xml \ --strip-debug \ --no-man-pages \ --no-header-files \ --compress=2 \ --output /jre FROM alpine:3.15 ### COPY GENERATED JRE ### ENV JAVA_HOME=/opt/java/openjdk ENV PATH "${JAVA_HOME}/bin:${PATH}" COPY --from=jre-build /jre $JAVA_HOME ### INSTALL DEPENDENCIES ### # font support needed for generating avatar icons, curl needed for healthcheck RUN apk add --no-cache fontconfig ttf-opensans curl ### DEPLOY APPLICATION ### #RUN mkdir /opt/gitbucket #COPY gitbucket.war /opt/gitbucket RUN addgroup gitbucket && adduser -D -G gitbucket gitbucket USER gitbucket ENV \ GITBUCKET_HOME=/gitbucket/gitbucket-data \ GITBUCKET_PORT=8080 \ GITBUCKET_PREFIX="" \ GITBUCKET_PLUGINDIR="" \ GITBUCKET_TMPDIR="" EXPOSE 8080/tcp HEALTHCHECK --interval=5m --timeout=5s CMD curl --fail http://localhost:8080/ || exit 1 CMD ["/opt/java/openjdk/bin/java", "-Xms128m", "-Xms512m", "-jar", "/opt/gitbucket/gitbucket.war"]