Skip to content

Commit 2a60f9a

Browse files
committed
docker: add healthchecks
1 parent a64a089 commit 2a60f9a

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@ RUN adduser --system --home /var/lib/sqld --uid 666 --gid 666 sqld
8080
WORKDIR /var/lib/sqld
8181
USER sqld
8282

83-
COPY docker-entrypoint.sh /usr/local/bin
84-
COPY docker-wrapper.sh /usr/local/bin
83+
COPY docker-entrypoint.sh docker-wrapper.sh docker-healthcheck.sh /usr/local/bin
8584

8685
COPY --from=gosu /usr/local/bin/gosu /usr/local/bin/gosu
8786
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
8887
COPY --from=builder /target/release/sqld /bin/sqld
8988

9089
USER root
9190

91+
HEALTHCHECK --interval=2s CMD /usr/local/bin/docker-healthcheck.sh
9292
ENTRYPOINT ["/usr/local/bin/docker-wrapper.sh"]
9393
CMD ["/bin/sqld"]

Dockerfile.dev

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,22 @@ FROM debian:bullseye-slim
5252
RUN apt update
5353

5454
EXPOSE 5001 8080
55+
5556
VOLUME [ "/var/lib/sqld" ]
5657

5758
RUN groupadd --system --gid 666 sqld
5859
RUN adduser --system --home /var/lib/sqld --uid 666 --gid 666 sqld
5960
WORKDIR /var/lib/sqld
6061
USER sqld
6162

62-
COPY docker-entrypoint.sh /usr/local/bin
63-
COPY docker-wrapper.sh /usr/local/bin
63+
COPY docker-entrypoint.sh docker-wrapper.sh docker-healthcheck.sh /usr/local/bin
6464

6565
COPY --from=gosu /usr/local/bin/gosu /usr/local/bin/gosu
6666
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
6767
COPY --from=builder /sqld/bin /bin/sqld
6868

6969
USER root
7070

71+
HEALTHCHECK --interval=2s CMD /usr/local/bin/docker-healthcheck.sh
7172
ENTRYPOINT ["/usr/local/bin/docker-wrapper.sh"]
7273
CMD ["/bin/sqld"]

docker-healthcheck.sh

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
SQLD_HTTP_LISTEN_ADDR="${SQLD_HTTP_LISTEN_ADDR:-"0.0.0.0:8080"}"
5+
SQLD_HTTP_LISTEN_ADDR="${SQLD_HTTP_LISTEN_ADDR//:/\/}"
6+
7+
exec 3<>"/dev/tcp/$SQLD_HTTP_LISTEN_ADDR"
8+
echo -e "GET /health HTTP/1.1\r\nConnection: close\r\n\r\n" >&3
9+
RESPONSE=$(cat <&3)
10+
exec 3<&- && exec 3>&-
11+
12+
if echo "$RESPONSE" | grep -q "HTTP/1.1 200 OK"; then
13+
exit 0
14+
else
15+
echo "Did not receive HTTP 200 response"
16+
echo "$RESPONSE"
17+
exit 1
18+
fi

0 commit comments

Comments
 (0)