11# build sqld
22FROM 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 \
65 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/*
119
1210WORKDIR /sqld
1311COPY . .
@@ -18,22 +16,57 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry \
1816 cp target/release/sqld /sqld/bin
1917
2018
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+
2150# runtime
2251FROM debian:bullseye-slim
2352RUN apt update
2453
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
2955VOLUME [ "/var/lib/sqld" ]
3056
3157RUN groupadd --system --gid 666 sqld
3258RUN adduser --system --home /var/lib/sqld --uid 666 --gid 666 sqld
33- USER sqld
3459WORKDIR /var/lib/sqld
60+ USER sqld
3561
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
3770
38- ENTRYPOINT ["/usr/local/bin/docker-entrypoint .sh"]
71+ ENTRYPOINT ["/usr/local/bin/docker-wrapper .sh"]
3972CMD ["/bin/sqld"]
0 commit comments