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"]