1
1
# build sqld
2
2
FROM rust:slim-bullseye as builder
3
- RUN apt update
4
-
5
- RUN apt install -y libclang-dev clang \
3
+ RUN apt update \
4
+ && apt install -y libclang-dev clang \
6
5
build-essential tcl protobuf-compiler file \
7
- libssl-dev pkg-config
8
-
9
- RUN apt clean
10
- RUN update-ca-certificates
6
+ libssl-dev pkg-config git cmake \
7
+ && apt clean \
8
+ && rm -rf /var/lib/apt/lists/*
11
9
12
10
WORKDIR /sqld
13
11
COPY . .
@@ -18,22 +16,57 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry \
18
16
cp target/release/sqld /sqld/bin
19
17
20
18
19
+ # official gosu install instruction (https://github.com/tianon/gosu/blob/master/INSTALL.md)
20
+ FROM debian:bullseye-slim as gosu
21
+ ENV GOSU_VERSION 1.17
22
+ RUN set -eux; \
23
+ # save list of currently installed packages for later so we can clean up
24
+ savedAptMark="$(apt-mark showmanual)"; \
25
+ apt-get update; \
26
+ apt-get install -y --no-install-recommends ca-certificates gnupg wget; \
27
+ rm -rf /var/lib/apt/lists/*; \
28
+ \
29
+ dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
30
+ wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
31
+ wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
32
+ \
33
+ # verify the signature
34
+ export GNUPGHOME="$(mktemp -d)"; \
35
+ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
36
+ gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
37
+ gpgconf --kill all; \
38
+ rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
39
+ \
40
+ # clean up fetch dependencies
41
+ apt-mark auto '.*' > /dev/null; \
42
+ [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
43
+ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
44
+ \
45
+ chmod +x /usr/local/bin/gosu; \
46
+ # verify that the binary works
47
+ gosu --version; \
48
+ gosu nobody true
49
+
21
50
# runtime
22
51
FROM debian:bullseye-slim
23
52
RUN apt update
24
53
25
- COPY --from=builder /sqld/bin /bin/sqld
26
- COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
27
- COPY docker-entrypoint.sh /usr/local/bin
28
-
54
+ EXPOSE 5001 8080
29
55
VOLUME [ "/var/lib/sqld" ]
30
56
31
57
RUN groupadd --system --gid 666 sqld
32
58
RUN adduser --system --home /var/lib/sqld --uid 666 --gid 666 sqld
33
- USER sqld
34
59
WORKDIR /var/lib/sqld
60
+ USER sqld
35
61
36
- EXPOSE 5001 8080
62
+ COPY docker-entrypoint.sh /usr/local/bin
63
+ COPY docker-wrapper.sh /usr/local/bin
64
+
65
+ COPY --from=gosu /usr/local/bin/gosu /usr/local/bin/gosu
66
+ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
67
+ COPY --from=builder /sqld/bin /bin/sqld
68
+
69
+ USER root
37
70
38
- ENTRYPOINT ["/usr/local/bin/docker-entrypoint .sh"]
71
+ ENTRYPOINT ["/usr/local/bin/docker-wrapper .sh"]
39
72
CMD ["/bin/sqld"]
0 commit comments