/ docker / proxy.ci.Dockerfile
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" ]