46 lines
1.0 KiB
Docker
46 lines
1.0 KiB
Docker
ARG REPO=library
|
|
# Build mole for all arch
|
|
FROM golang:1.12-alpine AS builder
|
|
|
|
ENV MOLE_VERSION=0.4.0
|
|
|
|
RUN apk add --no-cache git curl tar
|
|
|
|
RUN mkdir /app
|
|
RUN curl -L https://github.com/davrodpin/mole/archive/v${MOLE_VERSION}.tar.gz | tar zx -C /app
|
|
WORKDIR /app/mole-${MOLE_VERSION}
|
|
|
|
# Download dependencies so they can be cached
|
|
RUN go mod download
|
|
|
|
# Build static
|
|
ARG GOARCH=amd64
|
|
ENV CGO_ENABLED=0 GOOS=linux
|
|
RUN go build -a -ldflags '-X main.version=${MOLE_VERSION}-dockamole' -installsuffix nocgo -o /bin/mole github.com/davrodpin/mole/cmd/mole
|
|
|
|
# Build client image using target arch
|
|
FROM ${REPO}/alpine
|
|
|
|
# Make multiarch capable
|
|
COPY --from=multiarch/qemu-user-static /usr/bin/qemu-* /usr/bin/
|
|
# Copy mole from builder
|
|
COPY --from=builder /bin/mole /usr/bin/mole
|
|
|
|
RUN apk --no-cache add bash openssh-client
|
|
|
|
RUN mkdir /mole
|
|
RUN adduser -S -h /mole mole
|
|
|
|
USER mole
|
|
|
|
RUN mkdir -p /mole/.ssh
|
|
RUN touch /mole/.ssh/config
|
|
# Make a volume to persist keys
|
|
VOLUME /mole/.ssh
|
|
|
|
ENV GEN_KNOWN_HOSTS=1
|
|
|
|
COPY ./start.sh ./
|
|
|
|
CMD ./start.sh
|