mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-27 16:17:03 +00:00
Docker creates intermediate layers on each command (for most commands), but the COPY was invalidating them too early, every time it runs it was generating a different layer. This patch moves the COPY down to the bottom, and adds a bit more organization to the commands below.
54 lines
1.6 KiB
Docker
54 lines
1.6 KiB
Docker
# Docker file for creating a docker container that can run the tests.
|
|
#
|
|
# Create the image:
|
|
# docker build -t chasquid-test -f test/Dockerfile .
|
|
#
|
|
# Run the tests:
|
|
# docker run --rm chasquid-test make test
|
|
#
|
|
# Get a shell inside the image (for debugging):
|
|
# docker run -it --entrypoint=/bin/bash chasquid-test
|
|
|
|
FROM golang:latest
|
|
|
|
WORKDIR /go/src/blitiri.com.ar/go/chasquid
|
|
|
|
# Make debconf/frontend non-interactive, to avoid distracting output about the
|
|
# lack of $TERM.
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
|
|
RUN apt-get update -q
|
|
|
|
# Install the required packages for the integration tests.
|
|
RUN apt-get install -y -q python3 msmtp
|
|
|
|
# Install the optional packages for the integration tests.
|
|
RUN apt-get install -y -q \
|
|
gettext-base dovecot-imapd \
|
|
exim4-daemon-light \
|
|
dnsmasq
|
|
|
|
# Prepare exim.
|
|
RUN mkdir -p test/t-02-exim/.exim4 \
|
|
&& ln -s /usr/sbin/exim4 test/t-02-exim/.exim4
|
|
|
|
# Install binaries for the (optional) DKIM integration test.
|
|
RUN go get github.com/driusan/dkim/... \
|
|
&& go install github.com/driusan/dkim/cmd/dkimsign \
|
|
&& go install github.com/driusan/dkim/cmd/dkimverify \
|
|
&& go install github.com/driusan/dkim/cmd/dkimkeygen
|
|
|
|
# Copy into the container. Everything below this line will not be cached.
|
|
COPY . .
|
|
|
|
# Install chasquid and its dependencies.
|
|
RUN go get -d -v ./... && go install -v ./...
|
|
|
|
# Don't run the tests as root: it makes some integration tests more difficult,
|
|
# as for example Exim has hard-coded protections against running as root.
|
|
RUN useradd -m chasquid && chown -R chasquid:chasquid .
|
|
USER chasquid
|
|
|
|
# Tests expect the $USER variable set.
|
|
ENV USER chasquid
|