FROM node:20-alpine # ? Setup a test SoftHSM module. In production a real HSM is used. ARG SOFTHSM2_VERSION=2.5.0 ENV SOFTHSM2_VERSION=${SOFTHSM2_VERSION} \ SOFTHSM2_SOURCES=/tmp/softhsm2 # install build dependencies including python3 (required for pkcs11js and partially TDS driver) RUN apk --update add \ alpine-sdk \ autoconf \ automake \ git \ libtool \ openssl-dev \ python3 \ make \ g++ \ openssh # install dependencies for TDS driver (required for SAP ASE dynamic secrets) RUN apk add --no-cache \ unixodbc \ freetds \ unixodbc-dev \ libc-dev \ freetds-dev RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/libtdsodbc.so\nSetup = /usr/lib/libtdsodbc.so\nFileUsage = 1\n" > /etc/odbcinst.ini # build and install SoftHSM2 RUN git clone https://github.com/opendnssec/SoftHSMv2.git ${SOFTHSM2_SOURCES} WORKDIR ${SOFTHSM2_SOURCES} RUN git checkout ${SOFTHSM2_VERSION} -b ${SOFTHSM2_VERSION} \ && sh autogen.sh \ && ./configure --prefix=/usr/local --disable-gost \ && make \ && make install WORKDIR /root RUN rm -fr ${SOFTHSM2_SOURCES} # install pkcs11-tool RUN apk --update add opensc RUN softhsm2-util --init-token --slot 0 --label "auth-app" --pin 1234 --so-pin 0000 # ? App setup RUN apk add --no-cache bash curl && curl -1sLf \ 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.alpine.sh' | bash \ && apk add infisical=0.8.1 && apk add --no-cache git WORKDIR /app COPY package.json package.json COPY package-lock.json package-lock.json RUN npm install COPY . . ENV HOST=0.0.0.0 CMD ["npm", "run", "dev:docker"]