From c2802f40dcbc6c7dfe5bd53346f41cfb6896f6b3 Mon Sep 17 00:00:00 2001 From: David Dworken Date: Sat, 5 Nov 2022 13:46:08 -0700 Subject: [PATCH] Use wait-for instead of a sleep for the dockerfile for self hosting --- backend/server/docker-compose.yml | 2 +- backend/server/native-arch-Dockerfile | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/server/docker-compose.yml b/backend/server/docker-compose.yml index b3769e3..4fecf22 100644 --- a/backend/server/docker-compose.yml +++ b/backend/server/docker-compose.yml @@ -1,7 +1,7 @@ # A docker-compose file to host a hiSHtory backend. To use: # 1. Update TODO_YOUR_POSTGRES_PASSWORD_HERE # 2. `docker compose -f backend/server/docker-compose.yml build` -# 3. `docker compose -f backend/server/docker-compose.yml up` +# 3. `docker compose -f backend/server/docker-compose.yml up` # 4. Point your hiSHtory client at the server by putting `export HISHTORY_SERVER=http://1.2.3.4` in your shellrc # 5. Run `hishtory init` to initialize hiSHtory with the local server # 6. [Optional, but recommended] Add a TLS proxy to enable https diff --git a/backend/server/native-arch-Dockerfile b/backend/server/native-arch-Dockerfile index 0de19ba..e75ef55 100644 --- a/backend/server/native-arch-Dockerfile +++ b/backend/server/native-arch-Dockerfile @@ -1,3 +1,6 @@ +# A fork of Dockerfile that doesn't hard code GOARCH and that uses wait-for to wait +# until the postgres server is up. Meant to be used in the docker-compose file for self hosting. + FROM golang:1.18 AS builder COPY go.mod ./ COPY go.sum ./ @@ -6,6 +9,9 @@ COPY . ./ RUN unset GOPATH; go build -o /server -ldflags "-X main.ReleaseVersion=v0.`cat VERSION`" backend/server/server.go FROM golang:1.18 +RUN apt-get update && apt-get install -y netcat +# Downlaod wait-for from a specific commit hash. This ensures that the owner of wait-for isn't in our TCB (though Github still is) +RUN curl https://raw.githubusercontent.com/eficode/wait-for/59bec22851ba83e9cc735a67a7d961f8aae2cd85/wait-for > /wait-for +RUN chmod +x /wait-for COPY --from=builder /server /server -# TODO: use wait-for-it.sh instead of a janky sleep -CMD ["sh", "-c", "sleep 5; /server"] +CMD ["/wait-for", "postgres:5432", "--", "/server"]