diff --git a/build/Dockerfile b/build/Dockerfile index 22683e818b83062d45d778f0a99653e347a8151e..430015c4bb66969e7658a820a5b3a4b18373bb0e 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -15,7 +15,7 @@ # docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version=v2.1.1 -t heroiclabs/nakama:2.1.1 # docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version="$(git rev-parse --short HEAD)" -t heroiclabs/nakama-prerelease:"$(git rev-parse --short HEAD)" -FROM golang:1.21.3-bullseye as builder +FROM golang:1.21.4-bookworm as builder ARG commit ARG version @@ -34,7 +34,7 @@ WORKDIR /go/build/nakama RUN git checkout --quiet "$commit" && \ go build -o /go/build-out/nakama -trimpath -mod=vendor -gcflags "-trimpath $PWD" -asmflags "-trimpath $PWD" -ldflags "-s -w -X main.version=$version -X main.commitID=$commit" -FROM debian:bullseye-slim +FROM debian:bookworm-slim MAINTAINER Heroic Labs @@ -47,7 +47,7 @@ LABEL description="Distributed server for social and realtime games and apps." RUN mkdir -p /nakama/data/modules && \ apt-get update && \ apt-get -y upgrade && \ - apt-get install -y --no-install-recommends ca-certificates=20210119 tzdata curl iproute2 unzip rsync git tini schroot && \ + apt-get install -y --no-install-recommends ca-certificates tzdata iproute2 tini && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* @@ -57,5 +57,5 @@ EXPOSE 7349 7350 7351 ENTRYPOINT ["tini", "--", "/nakama/nakama"] -HEALTHCHECK --interval=5m --timeout=10s \ - CMD curl -f http://localhost:7350/ || exit 1 +HEALTHCHECK --interval=30s --timeout=10s \ + CMD /nakama/nakama healthcheck || exit 1 diff --git a/build/Dockerfile.dsym b/build/Dockerfile.dsym index 3b89416b956afc70a38d18eec36a2a51e1d235a1..3000bf93c81bc983e1b86e0318e3f68858de5829 100644 --- a/build/Dockerfile.dsym +++ b/build/Dockerfile.dsym @@ -12,8 +12,8 @@ ## See the License for the specific language governing permissions and ## limitations under the License. -# docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version=v2.1.1 -t heroiclabs/nakama:2.1.1 -# docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version="v2.1.1-$(git rev-parse --short HEAD)" -t heroiclabs/nakama-prerelease:"2.1.1-$(git rev-parse --short HEAD)" +# docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version=v3.19.0 -t heroiclabs/nakama:3.19.0 +# docker build "$PWD" --build-arg commit="$(git rev-parse --short HEAD)" --build-arg version="v3.19.0-$(git rev-parse --short HEAD)" -t heroiclabs/nakama-prerelease:"3.19.0-$(git rev-parse --short HEAD)" FROM golang:1.21.3-bullseye as builder @@ -47,7 +47,7 @@ LABEL description="Distributed server for social and realtime games and apps." RUN mkdir -p /nakama/data/modules && \ apt-get update && \ apt-get -y upgrade && \ - apt-get install -y --no-install-recommends ca-certificates=20210119 tzdata curl iproute2 unzip rsync git tini schroot && \ + apt-get install -y --no-install-recommends ca-certificates tzdata iproute2 tini && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* @@ -57,5 +57,5 @@ EXPOSE 7349 7350 7351 ENTRYPOINT ["tini", "--", "/nakama/nakama"] -HEALTHCHECK --interval=5m --timeout=10s \ - CMD curl -f http://localhost:7350/ || exit 1 +HEALTHCHECK --interval=30s --timeout=10s \ + CMD /nakama/nakama healthcheck || exit 1 diff --git a/build/Dockerfile.local b/build/Dockerfile.local new file mode 100644 index 0000000000000000000000000000000000000000..ed30da4582ff88cc0c0a8dd1de6b8b88a62d27f7 --- /dev/null +++ b/build/Dockerfile.local @@ -0,0 +1,57 @@ +## Copyright 2018 The Nakama Authors +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. + +# docker build .. -f Dockerfile.local -t heroiclabs/nakama-dev + +FROM golang:1.21.4-bookworm as builder + +ENV GOOS linux +ENV GOARCH amd64 +ENV CGO_ENABLED 1 + +RUN apt-get update && \ + apt-get -y upgrade && \ + apt-get install -y --no-install-recommends ca-certificates gcc libc6-dev + +WORKDIR /go/build/nakama + +COPY . . + +RUN go build -o /go/build-out/nakama -trimpath -mod=vendor -gcflags "-trimpath $PWD" -asmflags "-trimpath $PWD" -ldflags "-s -w -X main.version=local" + +FROM debian:bookworm-slim + +MAINTAINER Heroic Labs + +ARG version + +LABEL version=$version +LABEL variant=nakama +LABEL description="Distributed server for social and realtime games and apps." + +RUN mkdir -p /nakama/data/modules && \ + apt-get update && \ + apt-get -y upgrade && \ + apt-get install -y --no-install-recommends ca-certificates tzdata iproute2 tini && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /nakama/ +COPY --from=builder "/go/build-out/nakama" /nakama/ +EXPOSE 7349 7350 7351 + +ENTRYPOINT ["tini", "--", "/nakama/nakama"] + +HEALTHCHECK --interval=30s --timeout=10s \ + CMD /nakama/nakama healthcheck || exit 1 diff --git a/docker-compose-postgres.yml b/docker-compose-postgres.yml index 41c67aef904bc7dd90b6e4bcfc351c553d798d34..e4dd1c6ae3d2e7e5c1b1b4d9cd2c591c4b17cf0f 100644 --- a/docker-compose-postgres.yml +++ b/docker-compose-postgres.yml @@ -21,7 +21,7 @@ services: retries: 5 nakama: container_name: nakama - image: registry.heroiclabs.com/heroiclabs/nakama:3.18.0 + image: registry.heroiclabs.com/heroiclabs/nakama:3.19.0 entrypoint: - "/bin/sh" - "-ecx" @@ -45,7 +45,7 @@ services: - "7350:7350" - "7351:7351" healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:7350/"] + test: ["CMD", "/nakama/nakama", "healthcheck"] interval: 10s timeout: 5s retries: 5 diff --git a/docker-compose.yml b/docker-compose.yml index 92489c0669a95670676ae39e9c2e82d408edde53..aee98b9bd012f85bfb740e03804fff491653c176 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: timeout: 3s retries: 5 nakama: - image: registry.heroiclabs.com/heroiclabs/nakama:3.18.0 + image: registry.heroiclabs.com/heroiclabs/nakama:3.19.0 entrypoint: - "/bin/sh" - "-ecx" @@ -45,7 +45,7 @@ services: - "7350:7350" - "7351:7351" healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:7350/"] + test: ["CMD", "/nakama/nakama", "healthcheck"] interval: 10s timeout: 5s retries: 5 diff --git a/main.go b/main.go index b4ace5e27059cc3714e6ccbf6902a6f84fb62e4f..1912500d13d938d7cdb8465d7994cfac916db031 100644 --- a/main.go +++ b/main.go @@ -96,6 +96,13 @@ func main() { os.Exit(1) } return + case "healthcheck": + resp, err := http.Get("http://localhost:7350") + if err != nil || resp.StatusCode != http.StatusOK { + tmpLogger.Fatal("healthcheck failed") + } + tmpLogger.Info("healthcheck ok") + return } }