proxy.ci.Dockerfile
1 FROM node:24.14.0-alpine AS build 2 3 RUN mkdir -p /opt/lineage2ts 4 WORKDIR /opt/lineage2ts 5 6 COPY proxy proxy 7 8 COPY package.json package.json 9 COPY package-lock.json package-lock.json 10 COPY package/cleanNpmModules.sh cleanNpmModules.sh 11 12 # Assumption is for compiled JS files to already exist inside 7z archives from previous CI stages 13 COPY proxy-dist.7z proxy-dist.7z 14 15 RUN apk add python3 && ln -sf python3 /usr/bin/python 16 RUN apk add py3-pip 17 RUN apk add build-base 18 RUN apk add 7zip 19 20 RUN cd proxy && 7z x ../proxy-dist.7z -y > ../null && rm -rf source && rm -f null 21 22 RUN rm -rf node_modules 23 RUN npm ci --omit=dev --workspace=proxy 24 25 RUN chmod +x cleanNpmModules.sh && sh cleanNpmModules.sh 26 27 RUN 7z a node_modules.7z node_modules 28 29 FROM node:24.14.0-alpine 30 31 RUN mkdir -p /opt/lineage2ts 32 WORKDIR /opt/lineage2ts 33 34 COPY --from=build /opt/lineage2ts/proxy /opt/lineage2ts/proxy 35 COPY --from=build /opt/lineage2ts/node_modules.7z /opt/lineage2ts/node_modules.7z 36 37 COPY package.json /opt/lineage2ts/package.json 38 COPY package-lock.json /opt/lineage2ts/package-lock.json 39 COPY LICENSE /opt/lineage2ts/LICENSE 40 COPY Readme.md /opt/lineage2ts/Readme.md 41 42 COPY docker/proxy-entry.sh proxy-entry.sh 43 RUN chmod +x proxy-entry.sh 44 45 RUN apk add 7zip 46 47 LABEL maintainer="MrTREX" version="latest" website="https://gitlab.com/MrTREX/lineage2ts" 48 49 # Please note that proxy server variables are prefixed via: PS.<config>.<property> 50 ENV PS.server.ExternalProxyIp=127.0.0.1 51 ENV PS.server.LoginServerHost=127.0.0.1 52 ENV PS.server.LoginServerPort=2106 53 ENV PS.logger.LogLevel=info 54 55 ARG BUILD_HASH 56 ARG BUILD_INFO 57 58 ENV BUILD_HASH=$BUILD_HASH 59 ENV BUILD_INFO=$BUILD_INFO 60 61 # Pass Nodejs runtime parameters via PS_NODE_OPTIONS 62 # ENV PS_NODE_OPTIONS=--expose-gc 63 64 EXPOSE 7777 2106 65 ENV NODE_ENV=production 66 67 CMD [ "/bin/sh", "proxy-entry.sh" ]