Skip to content
Snippets Groups Projects
Containerfile 1.13 KiB
Newer Older
# NOTE: image from quay.io (e.g. quay.io/fedora/fedora:36) is incompatible with Docker
#       (broken DNS resolution). If you want to take images from quay.io, use Podman
FROM alpine

ARG NODEJS_VERSION='16.9.0'


ENV CNTROOT=/opt/ctnroot

RUN dnf update -y \
    && dnf install -y curl jq \
    && dnf clean -y all

WORKDIR ${CNTROOT}
RUN ARCHIVE_FILE_NAME="node-v${NODEJS_VERSION}-linux-x64.tar.gz" \
    && curl --silent --remote-name --location \
        "https://nodejs.org/dist/v${NODEJS_VERSION}/${ARCHIVE_FILE_NAME}" \
    && tar -vxz \
           -C "${CNTROOT}" \
           --strip 1 \
           -f "./${ARCHIVE_FILE_NAME}" >/dev/null 2>&1 \
    && rm -rf ${ARCHIVE_FILE_NAME}


ENV \
    HOME=/opt/ctnroot/src \
    PATH=/opt/ctnroot/src/bin:/opt/ctnroot/bin:${PATH}

WORKDIR ${HOME}
COPY ./src/* ./
RUN npm install --production

RUN groupadd --gid 2002 ctnrgroup \
    && useradd --uid 1001 --system --gid 2002 --home-dir ${HOME} \
            --shell /sbin/nologin --comment "ctnr user" \
            ctnruser \
    && chown -R 1001:2002 ${CNTROOT}

USER 1001

ENTRYPOINT [ "node" ]
CMD [ "./main.js", \
        "--port", "8023" \
]

EXPOSE 8023