62 lines
1.2 KiB
Docker
62 lines
1.2 KiB
Docker
FROM golang:1.20.3-alpine3.17 AS build
|
|
|
|
# environment settings
|
|
ARG GOOS="linux" \
|
|
CGO_ENABLED="0"
|
|
|
|
# copy files to container
|
|
COPY . "/tmp/endlessh-go/"
|
|
|
|
# set build workdir
|
|
WORKDIR "/tmp/endlessh-go/"
|
|
|
|
# build app
|
|
RUN \
|
|
go mod tidy \
|
|
&& go build -o "endlessh-go"
|
|
|
|
|
|
FROM alpine:3.17
|
|
|
|
# labels
|
|
LABEL org.opencontainers.image.title=endlessh-go
|
|
LABEL org.opencontainers.image.description="Endlessh: an SSH tarpit"
|
|
LABEL org.opencontainers.image.vendor="Shizun Ge"
|
|
LABEL org.opencontainers.image.licenses=GPLv3
|
|
|
|
|
|
# install packages
|
|
RUN \
|
|
echo "**** installing base packages ****" \
|
|
&& apk update \
|
|
&& apk --no-cache add \
|
|
ca-certificates \
|
|
bash \
|
|
procps \
|
|
tzdata
|
|
|
|
# prepare container
|
|
RUN \
|
|
echo "**** create default user ****" \
|
|
&& addgroup -S -g 2000 abc \
|
|
&& adduser -S -D -H -s /bin/bash -u 2000 -G abc abc
|
|
|
|
# cleanup installation
|
|
RUN \
|
|
echo "**** cleanup ****" \
|
|
&& rm -rf \
|
|
/tmp/* \
|
|
/var/cache/apk/* \
|
|
/var/tmp/*
|
|
|
|
# copy files to container
|
|
COPY --from=build "/tmp/endlessh-go/endlessh-go" "/usr/local/bin/"
|
|
|
|
# ssh / prometheus port
|
|
EXPOSE 2222 2112
|
|
|
|
USER abc
|
|
|
|
ENTRYPOINT ["/usr/local/bin/endlessh-go"]
|
|
|
|
CMD ["-logtostderr", "-v=1"]
|