diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000000..0d643e499a --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,90 @@ +FROM golang:1.18 as build +WORKDIR /src +COPY go.mod go.sum /src/ +RUN go mod download -x +COPY . . +RUN rm -rf /src/webconsole/dist +RUN GOOS=linux GOARCH=amd64 WEBCONSOLE=default make immuadmin-static immudb-static +RUN mkdir /empty + +FROM debian:bullseye-slim as bullseye-slim +LABEL org.opencontainers.image.authors="Codenotary Inc. " + +COPY --from=build /src/immudb /usr/sbin/immudb +COPY --from=build /src/immuadmin /usr/local/bin/immuadmin +COPY --from=build "/etc/ssl/certs/ca-certificates.crt" "/etc/ssl/certs/ca-certificates.crt" + +ARG IMMU_UID="3322" +ARG IMMU_GID="3322" + +ENV IMMUDB_HOME="/usr/share/immudb" \ + IMMUDB_DIR="/var/lib/immudb" \ + IMMUDB_ADDRESS="0.0.0.0" \ + IMMUDB_PORT="3322" \ + IMMUDB_PIDFILE="" \ + IMMUDB_LOGFILE="" \ + IMMUDB_MTLS="false" \ + IMMUDB_AUTH="true" \ + IMMUDB_DETACHED="false" \ + IMMUDB_DEVMODE="true" \ + IMMUDB_MAINTENANCE="false" \ + IMMUDB_ADMIN_PASSWORD="immudb" \ + IMMUDB_PGSQL_SERVER="true" \ + IMMUADMIN_TOKENFILE="/var/lib/immudb/admin_token" + +RUN addgroup --system --gid $IMMU_GID immu && \ + adduser --system --uid $IMMU_UID --no-create-home --ingroup immu immu && \ + mkdir -p "$IMMUDB_HOME" && \ + mkdir -p "$IMMUDB_DIR" && \ + chown -R immu:immu "$IMMUDB_HOME" "$IMMUDB_DIR" && \ + chmod -R 777 "$IMMUDB_HOME" "$IMMUDB_DIR" && \ + chmod +x /usr/sbin/immudb /usr/local/bin/immuadmin + +EXPOSE 3322 +EXPOSE 9497 +EXPOSE 8080 +EXPOSE 5432 + +HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD [ "/usr/local/bin/immuadmin", "status" ] +USER immu +ENTRYPOINT ["/usr/sbin/immudb"] + + +FROM scratch as scratch +LABEL org.opencontainers.image.authors="Codenotary Inc. " + +ARG IMMU_UID="3322" +ARG IMMU_GID="3322" +ARG IMMUDB_HOME="/usr/share/immudb" + +ENV IMMUDB_HOME="${IMMUDB_HOME}" \ + IMMUDB_DIR="/var/lib/immudb" \ + IMMUDB_ADDRESS="0.0.0.0" \ + IMMUDB_PORT="3322" \ + IMMUDB_PIDFILE="" \ + IMMUDB_LOGFILE="" \ + IMMUDB_MTLS="false" \ + IMMUDB_AUTH="true" \ + IMMUDB_DETACHED="false" \ + IMMUDB_DEVMODE="true" \ + IMMUDB_MAINTENANCE="false" \ + IMMUDB_ADMIN_PASSWORD="immudb" \ + IMMUDB_PGSQL_SERVER="true" \ + IMMUADMIN_TOKENFILE="/var/lib/immudb/admin_token" \ + USER=immu \ + HOME="${IMMUDB_HOME}" + +COPY --from=build /src/immudb /usr/sbin/immudb +COPY --from=build /src/immuadmin /usr/local/bin/immuadmin +COPY --from=build --chown="$IMMU_UID:$IMMU_GID" /empty "$IMMUDB_HOME" +COPY --from=build --chown="$IMMU_UID:$IMMU_GID" /empty "$IMMUDB_DIR" +COPY --from=build "/etc/ssl/certs/ca-certificates.crt" "/etc/ssl/certs/ca-certificates.crt" + +EXPOSE 3322 +EXPOSE 9497 +EXPOSE 8080 +EXPOSE 5432 + +HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD [ "/usr/local/bin/immuadmin", "status" ] +USER "${IMMU_UID}:${IMMU_GID}" +ENTRYPOINT ["/usr/sbin/immudb"] diff --git a/Dockerfile.alma b/build/Dockerfile.alma similarity index 100% rename from Dockerfile.alma rename to build/Dockerfile.alma diff --git a/Dockerfile.immuadmin b/build/Dockerfile.immuadmin similarity index 100% rename from Dockerfile.immuadmin rename to build/Dockerfile.immuadmin diff --git a/Dockerfile.immuclient b/build/Dockerfile.immuclient similarity index 100% rename from Dockerfile.immuclient rename to build/Dockerfile.immuclient diff --git a/Dockerfile.rndpass b/build/Dockerfile.rndpass similarity index 100% rename from Dockerfile.rndpass rename to build/Dockerfile.rndpass