2024-01-16 01:46:22 +03:00
|
|
|
FROM ubuntu:jammy AS builder
|
2022-10-05 16:11:03 +03:00
|
|
|
|
|
|
|
ENV NODE_ENV="production"
|
|
|
|
|
|
|
|
RUN set -ex; \
|
|
|
|
export DEBIAN_FRONTEND=noninteractive; \
|
|
|
|
apt-get -qq update; \
|
|
|
|
apt-get -y --no-install-recommends install \
|
2020-06-18 13:40:08 +03:00
|
|
|
build-essential \
|
2022-10-05 16:11:03 +03:00
|
|
|
ca-certificates \
|
2023-10-25 04:25:56 +03:00
|
|
|
curl \
|
|
|
|
gnupg \
|
2022-10-05 16:11:03 +03:00
|
|
|
pkg-config \
|
|
|
|
xvfb \
|
|
|
|
libglfw3-dev \
|
|
|
|
libuv1-dev \
|
|
|
|
libjpeg-turbo8 \
|
2024-01-16 01:46:22 +03:00
|
|
|
libicu70 \
|
2020-06-18 13:40:08 +03:00
|
|
|
libcairo2-dev \
|
2022-10-05 16:11:03 +03:00
|
|
|
libpango1.0-dev \
|
|
|
|
libjpeg-dev \
|
|
|
|
libgif-dev \
|
|
|
|
librsvg2-dev \
|
2023-01-10 18:01:26 +03:00
|
|
|
gir1.2-rsvg-2.0 \
|
|
|
|
librsvg2-2 \
|
|
|
|
librsvg2-common \
|
2022-10-05 16:11:03 +03:00
|
|
|
libcurl4-openssl-dev \
|
2023-01-10 18:01:26 +03:00
|
|
|
libpixman-1-dev \
|
|
|
|
libpixman-1-0; \
|
2023-10-25 04:21:31 +03:00
|
|
|
apt-get -y --purge autoremove; \
|
|
|
|
apt-get clean; \
|
2023-10-25 05:22:34 +03:00
|
|
|
rm -rf /var/lib/apt/lists/*;
|
2023-01-10 18:01:26 +03:00
|
|
|
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
|
2023-10-25 05:14:30 +03:00
|
|
|
RUN mkdir -p /etc/apt/keyrings; \
|
2023-10-25 05:22:34 +03:00
|
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
|
2024-01-16 01:46:22 +03:00
|
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; \
|
2023-10-25 04:21:31 +03:00
|
|
|
apt-get -qq update; \
|
2022-10-05 16:11:03 +03:00
|
|
|
apt-get install -y nodejs; \
|
2023-01-10 18:01:26 +03:00
|
|
|
npm i -g npm@latest; \
|
2023-10-25 05:57:00 +03:00
|
|
|
apt-get -y remove curl gnupg; \
|
2022-10-05 16:11:03 +03:00
|
|
|
apt-get -y --purge autoremove; \
|
|
|
|
apt-get clean; \
|
|
|
|
rm -rf /var/lib/apt/lists/*;
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-10-05 16:11:03 +03:00
|
|
|
RUN mkdir -p /usr/src/app
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2023-01-10 18:01:26 +03:00
|
|
|
WORKDIR /usr/src/app
|
|
|
|
|
2023-02-18 16:46:57 +03:00
|
|
|
COPY package.json /usr/src/app
|
|
|
|
COPY package-lock.json /usr/src/app
|
|
|
|
|
2023-10-31 21:49:35 +03:00
|
|
|
RUN npm config set maxsockets 1; \
|
|
|
|
npm config set fetch-retries 5; \
|
2023-10-31 19:51:53 +03:00
|
|
|
npm config set fetch-retry-mintimeout 100000; \
|
|
|
|
npm config set fetch-retry-maxtimeout 600000; \
|
|
|
|
npm ci --omit=dev; \
|
2023-02-21 09:06:58 +03:00
|
|
|
chown -R root:root /usr/src/app;
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2024-01-16 01:46:22 +03:00
|
|
|
FROM ubuntu:jammy AS final
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-10-05 16:11:03 +03:00
|
|
|
ENV \
|
|
|
|
NODE_ENV="production" \
|
|
|
|
CHOKIDAR_USEPOLLING=1 \
|
|
|
|
CHOKIDAR_INTERVAL=500
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-10-05 16:11:03 +03:00
|
|
|
RUN set -ex; \
|
|
|
|
export DEBIAN_FRONTEND=noninteractive; \
|
|
|
|
groupadd -r node; \
|
|
|
|
useradd -r -g node node; \
|
|
|
|
apt-get -qq update; \
|
|
|
|
apt-get -y --no-install-recommends install \
|
|
|
|
ca-certificates \
|
2023-10-25 05:57:00 +03:00
|
|
|
curl \
|
|
|
|
gnupg \
|
2020-06-18 13:40:08 +03:00
|
|
|
xvfb \
|
2022-10-05 16:11:03 +03:00
|
|
|
libglfw3 \
|
|
|
|
libuv1 \
|
|
|
|
libjpeg-turbo8 \
|
2024-01-16 01:46:22 +03:00
|
|
|
libicu70 \
|
2022-10-05 16:11:03 +03:00
|
|
|
libcairo2 \
|
|
|
|
libgif7 \
|
2022-09-15 00:43:44 +03:00
|
|
|
libopengl0 \
|
2022-10-05 16:11:03 +03:00
|
|
|
libpixman-1-0 \
|
2022-09-15 00:43:44 +03:00
|
|
|
libcurl4 \
|
2022-10-05 16:11:03 +03:00
|
|
|
librsvg2-2 \
|
2023-01-10 18:01:26 +03:00
|
|
|
libpango-1.0-0; \
|
|
|
|
apt-get -y --purge autoremove; \
|
|
|
|
apt-get clean; \
|
|
|
|
rm -rf /var/lib/apt/lists/*;
|
|
|
|
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
|
2023-10-25 05:57:00 +03:00
|
|
|
RUN mkdir -p /etc/apt/keyrings; \
|
|
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
|
2024-01-16 01:46:22 +03:00
|
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; \
|
2023-10-25 05:57:00 +03:00
|
|
|
apt-get -qq update; \
|
2022-10-05 16:11:03 +03:00
|
|
|
apt-get install -y nodejs; \
|
2023-01-10 18:01:26 +03:00
|
|
|
npm i -g npm@latest; \
|
2023-10-25 05:57:00 +03:00
|
|
|
apt-get -y remove curl gnupg; \
|
2022-10-05 16:11:03 +03:00
|
|
|
apt-get -y --purge autoremove; \
|
|
|
|
apt-get clean; \
|
|
|
|
rm -rf /var/lib/apt/lists/*;
|
2016-03-03 17:51:53 +03:00
|
|
|
|
2022-10-05 16:11:03 +03:00
|
|
|
COPY --from=builder /usr/src/app /usr/src/app
|
|
|
|
|
|
|
|
COPY . /usr/src/app
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-11-07 04:31:26 +03:00
|
|
|
RUN mkdir -p /data && chown node:node /data
|
2017-09-20 09:03:46 +03:00
|
|
|
VOLUME /data
|
|
|
|
WORKDIR /data
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-11-21 07:00:41 +03:00
|
|
|
EXPOSE 8080
|
2020-06-18 15:24:35 +03:00
|
|
|
|
|
|
|
USER node:node
|
2020-06-18 13:40:08 +03:00
|
|
|
|
2022-10-05 16:11:03 +03:00
|
|
|
ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"]
|
2022-11-07 05:30:55 +03:00
|
|
|
|
|
|
|
HEALTHCHECK CMD node /usr/src/app/src/healthcheck.js
|