# Docker/Kubernetes file for running the bot
#FROM node:alpine
FROM alpine:edge

RUN apk --no-cache upgrade
RUN apk add --no-cache git cmake msttcorefonts-installer python3 alpine-sdk ffmpeg wget rpm2cpio \
    zlib-dev libpng-dev libjpeg-turbo-dev freetype-dev fontconfig-dev \
    libtool libwebp-dev libxml2-dev freetype fontconfig \
		vips vips-dev grep libc6-compat nodejs-current nodejs-current-dev npm

# install pnpm
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \
  npm install -g pnpm@6.27.1

# liblqr needs to be built manually for magick to work
# and because alpine doesn't have it in their repos
RUN git clone https://github.com/carlobaldassi/liblqr \
		&& cd liblqr \
		&& ./configure \
		&& make \
		&& make install

# install imagemagick from source rather than using the package
# since the alpine package does not include liblqr support.
RUN git clone https://github.com/ImageMagick/ImageMagick.git ImageMagick \
    && cd ImageMagick \
    && ./configure \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--enable-static \
		--disable-openmp \
		--with-threads \
		--with-png \
		--with-webp \
		--with-modules \
		--with-pango \
		--without-hdri \
		--with-lqr \
    && make \
    && make install

RUN update-ms-fonts && fc-cache -f

RUN adduser esmBot -s /bin/sh -D
USER esmBot

WORKDIR /home/esmBot/.internal

COPY --chown=esmBot:esmBot ./package.json package.json
COPY --chown=esmBot:esmBot ./pnpm-lock.yaml pnpm-lock.yaml
RUN pnpm install
COPY . .
RUN rm .env
RUN pnpm run build

RUN mkdir /home/esmBot/help \
		&& chown esmBot:esmBot /home/esmBot/help \
		&& chmod 777 /home/esmBot/help

RUN mkdir /home/esmBot/temp \
		&& chown esmBot:esmBot /home/esmBot/temp \
		&& chmod 777 /home/esmBot/temp

RUN mkdir /home/esmBot/.internal/logs \
		&& chown esmBot:esmBot /home/esmBot/.internal/logs \
		&& chmod 777 /home/esmBot/.internal/logs

ENTRYPOINT ["node", "app.js"]