github.com/letsencrypt/boulder@v0.20251208.0/test/vtcomboserver/Dockerfile (about) 1 # syntax=docker/dockerfile:1 2 ARG VITESS_TAG=v23.0.0 3 ARG MYSQL_BASE_IMAGE=mysql:8.4 4 5 FROM golang:1.25.2-bookworm AS build 6 ARG VITESS_TAG 7 ENV CGO_ENABLED=0 8 9 # Largely cobbled together from Vitess's own Dockerfiles and install scripts: 10 # - https://github.com/vitessio/vitess/blob/v22.0.1/docker/lite/Dockerfile 11 # - https://github.com/vitessio/vitess/blob/v22.0.1/docker/lite/Dockerfile.mysql84 12 # - https://github.com/vitessio/vitess/blob/v22.0.1/docker/utils/install_dependencies.sh 13 # - https://github.com/vitessio/vitess/blob/v22.0.1/docker/vttestserver/Dockerfile.mysql80 14 15 ENV VTROOT=/vt 16 WORKDIR /src 17 18 RUN apt-get update && apt-get install -y --no-install-recommends \ 19 git ca-certificates \ 20 && rm -rf /var/lib/apt/lists/* 21 22 RUN git clone --depth 1 --branch "${VITESS_TAG}" https://github.com/vitessio/vitess.git . 23 24 # Build only the binaries we need 25 RUN go build -trimpath -o /out/vtcombo ./go/cmd/vtcombo 26 RUN go build -trimpath -o /out/mysqlctl ./go/cmd/mysqlctl 27 28 FROM ${MYSQL_BASE_IMAGE} AS runtime 29 30 # Vitess expects to run as a non-root user 31 RUN groupadd -r vitess && useradd -r -g vitess vitess 32 33 ENV VTROOT=/vt \ 34 VTDATAROOT=/vt/vtdataroot \ 35 PATH=/vt/bin:$PATH 36 37 WORKDIR /vt 38 39 RUN mkdir -p /vt/vtdataroot /vt/bin /vt/config/mycnf /vt/web \ 40 && chown -R vitess:vitess /vt 41 42 # Copy only the binaries we need 43 COPY --from=build /out/vtcombo /vt/bin/vtcombo 44 COPY --from=build /out/mysqlctl /vt/bin/mysqlctl 45 RUN chmod +x /vt/bin/* && chown -R vitess:vitess /vt/bin 46 47 # Copy other necessary files 48 COPY --from=build --chown=vitess:vitess /src/config/init_db.sql /vt/config/ 49 COPY --from=build --chown=vitess:vitess /src/config/mycnf /vt/config/mycnf 50 COPY --from=build --chown=vitess:vitess /src/web/vtadmin /vt/web/vtadmin 51 52 # Copy install script we use to trigger failures in our integration tests 53 COPY --chown=vitess:vitess install_trigger.sh /vt/install_trigger.sh 54 RUN chmod +x /vt/install_trigger.sh 55 56 VOLUME /vt/vtdataroot 57 58 COPY setup_vschema_folder.sh /vt/setup_vschema_folder.sh 59 COPY run.sh /vt/run.sh 60 RUN chmod +x /vt/setup_vschema_folder.sh /vt/run.sh \ 61 && chown vitess:vitess /vt/setup_vschema_folder.sh /vt/run.sh 62 63 USER vitess 64 65 CMD ["/vt/run.sh", "8.0.40-Vitess"]