-
Notifications
You must be signed in to change notification settings - Fork 15
/
Dockerfile
46 lines (42 loc) · 1.67 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Dockerfile
# Build image for a containerized instance of sshnpd
FROM dart:3.2.4@sha256:b3cc32bdac7251e7a18e16e6ec9f6934025308de10690edd7c42d6078f5c27f9 AS buildimage
ENV PACKAGEDIR=packages/dart/sshnoports
ENV BINARYDIR=/usr/local/at
SHELL ["/bin/bash", "-c"]
WORKDIR /app
COPY . .
RUN \
set -eux ; \
mkdir -p ${BINARYDIR} ; \
cd ${PACKAGEDIR}; \
dart pub get ; \
dart run build_runner build --delete-conflicting-outputs ; \
dart compile exe bin/sshnpd.dart -o ${BINARYDIR}/sshnpd ; \
dart compile exe bin/sshrv.dart -o ${BINARYDIR}/sshrv
# Second stage of build FROM debian-slim
FROM debian:stable-20240110-slim@sha256:f7235f31d948d45b37de1faabc7e518859d2b9cf0508486d71c1772cfc9bed8a
ENV USER=atsign
ENV HOMEDIR=/${USER}
ENV BINARYDIR=/usr/local/at
ENV USER_ID=1024
ENV GROUP_ID=1024
COPY --from=buildimage /app/packages/dart/sshnoports/bundles/core/docker/.startup.sh ${HOMEDIR}/
RUN \
set -eux ; \
apt-get update ; \
apt-get install -y openssh-server sudo iputils-ping iproute2 ncat telnet net-tools nmap iperf3 traceroute vim ; \
addgroup --gid ${GROUP_ID} ${USER} ; \
useradd --system --uid ${USER_ID} --gid ${GROUP_ID} --shell /bin/bash --home ${HOMEDIR} ${USER} ; \
mkdir -p ${HOMEDIR}/.atsign/keys ; \
mkdir -p ${HOMEDIR}/.ssh ; \
touch ${HOMEDIR}/.ssh/authorized_keys ; \
chown -R ${USER}:${USER} ${HOMEDIR} ; \
chmod 600 ${HOMEDIR}/.ssh/authorized_keys ; \
usermod -aG sudo ${USER} ; \
mkdir /run/sshd ; \
chmod 755 /${USER}/.startup.sh
COPY --from=buildimage --chown=${USER}:${USER} /usr/local/at/sshnpd /usr/local/at/
COPY --from=buildimage --chown=${USER}:${USER} /usr/local/at/sshrv /usr/local/at/
WORKDIR ${HOMEDIR}
ENTRYPOINT ["/atsign/.startup.sh"]