vitess.io/vitess@v0.16.2/docker/bootstrap/Dockerfile.common (about) 1 FROM --platform=linux/amd64 golang:1.20.3-buster 2 3 # Install Vitess build dependencies 4 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 5 # TODO(mberlin): Group these to make it easier to understand which library actually requires them. 6 ant \ 7 chromium \ 8 curl \ 9 default-jdk \ 10 etcd \ 11 g++ \ 12 git \ 13 make \ 14 maven \ 15 software-properties-common \ 16 unzip \ 17 zip \ 18 xvfb \ 19 && rm -rf /var/lib/apt/lists/* 20 21 # Set up Vitess environment (equivalent to '. dev.env') 22 ENV VTROOT /vt/src/vitess.io/vitess 23 ENV VTDATAROOT /vt/vtdataroot 24 ENV VTPORTSTART 15000 25 ENV PATH $VTROOT/bin:$VTROOT/dist/maven/bin:$VTROOT/dist/chromedriver:$PATH 26 ENV USER vitess 27 28 # Copy files needed for bootstrap 29 COPY bootstrap.sh dev.env build.env go.mod go.sum /vt/src/vitess.io/vitess/ 30 COPY config /vt/src/vitess.io/vitess/config 31 COPY tools /vt/src/vitess.io/vitess/tools 32 33 # Create vitess user 34 RUN groupadd -r vitess && useradd -r -g vitess vitess && \ 35 mkdir -p /vt/vtdataroot /home/vitess && \ 36 chown -R vitess:vitess /vt /home/vitess 37 38 # Download vendored Go dependencies 39 RUN cd /vt/src/vitess.io/vitess && \ 40 su vitess -c "/usr/local/go/bin/go mod download" 41 42 # Create mount point for actual data (e.g. MySQL data dir) 43 VOLUME /vt/vtdataroot 44 45 # The docker lite images copy from the builder in /vt/bin 46 # Add compatibility to the previous layout for now 47 RUN su vitess -c "mkdir -p /vt/src/vitess.io/vitess/bin && rm -rf /vt/bin && ln -s /vt/src/vitess.io/vitess/bin /vt/bin" 48 49 # If the user doesn't specify a command, load a shell. 50 CMD ["/bin/bash"]