From 8ce79ed739188287dd1edb8772f0becef7c269aa Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:42:04 -0600 Subject: [PATCH 01/21] Remove .env file from structure, add to compose --- compose.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/compose.yml b/compose.yml index 851994a..bf7f9b9 100644 --- a/compose.yml +++ b/compose.yml @@ -9,6 +9,13 @@ services: - ./server:/app ports: - "4000:4000" + #enviornment: + #NEXT_PUBLIC_CLIENT_TOKEN: + #COMBAT_API_URL: http://server:4000/roster/combat + #RESERVE_API_URL: http://server:4000/roster/reserves + #NEXT_PUBLIC_INDIVIDUAL_API_URL: http://server:4000/roster/individual + #CACHE_TIMESTAMP_URL: http://server:4000/cache-timestamp + #GROUP_API_URL: http://server:4000/roster/groups working_dir: /app command: /bin/sh -c "apk add curl && npm install && node server.js" healthcheck: @@ -26,8 +33,13 @@ services: - ./client:/app ports: - "80:3000" - env_file: - - ./client/.env + enviornment: + NEXT_PUBLIC_CLIENT_TOKEN: + COMBAT_API_URL: http://server:4000/roster/combat + RESERVE_API_URL: http://server:4000/roster/reserves + NEXT_PUBLIC_INDIVIDUAL_API_URL: http://server:4000/roster/individual + CACHE_TIMESTAMP_URL: http://server:4000/cache-timestamp + GROUP_API_URL: http://server:4000/roster/groups entrypoint: /bin/sh -c "until wget -q --spider http://server:4000; do echo 'Waiting for server...'; sleep 5; done; npm install && npm run build && npm run start" working_dir: /app From 0bc8f49615f894bbe5190c429d59d5a21c893c4e Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:20:44 -0600 Subject: [PATCH 02/21] Require server to use enviornment vars --- server/controllers/cacheManager.js | 2 +- server/credentials/example_token.js | 6 ------ server/server.js | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 server/credentials/example_token.js diff --git a/server/controllers/cacheManager.js b/server/controllers/cacheManager.js index 78c73de..0f74b01 100644 --- a/server/controllers/cacheManager.js +++ b/server/controllers/cacheManager.js @@ -1,6 +1,6 @@ const axios = require("axios"); const axiosRetry = require("axios-retry").default || require("axios-retry"); -const { API_TOKEN } = require("../credentials/token"); +const { API_TOKEN } = process.env.API_TOKEN; let cacheStatus = { combat: false, diff --git a/server/credentials/example_token.js b/server/credentials/example_token.js deleted file mode 100644 index 6ae11a2..0000000 --- a/server/credentials/example_token.js +++ /dev/null @@ -1,6 +0,0 @@ -const API_TOKEN = "XXXXXXXXXXX"; -const CLIENT_TOKEN = "XXXXXXXX"; -module.exports = { API_TOKEN, CLIENT_TOKEN }; - -//rename this file as "token.js" when in use. -// should be in `../server/credentials/token.js` path. diff --git a/server/server.js b/server/server.js index 398628e..19c78d8 100644 --- a/server/server.js +++ b/server/server.js @@ -4,7 +4,7 @@ const compression = require("compression"); const app = express(); const cors = require("cors"); const port = 4000; -const { CLIENT_TOKEN } = require("./credentials/token"); +const { CLIENT_TOKEN } = process.env.CLIENT_TOKEN; const { cacheTime, initializeCache } = require("./controllers/cacheManager"); const corsOptions = { From bb6a93e7ae62cbcc44509cc39c4fbf1989fe2db4 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:22:35 -0600 Subject: [PATCH 03/21] provide server tokens via compose --- compose.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/compose.yml b/compose.yml index bf7f9b9..fa6b796 100644 --- a/compose.yml +++ b/compose.yml @@ -9,13 +9,10 @@ services: - ./server:/app ports: - "4000:4000" - #enviornment: - #NEXT_PUBLIC_CLIENT_TOKEN: - #COMBAT_API_URL: http://server:4000/roster/combat - #RESERVE_API_URL: http://server:4000/roster/reserves - #NEXT_PUBLIC_INDIVIDUAL_API_URL: http://server:4000/roster/individual - #CACHE_TIMESTAMP_URL: http://server:4000/cache-timestamp - #GROUP_API_URL: http://server:4000/roster/groups + enviornment: + API_TOKEN: + CLIENT_TOKEN: + working_dir: /app command: /bin/sh -c "apk add curl && npm install && node server.js" healthcheck: From 7185f07ff42beafb1acbe782832992d58c7ab450 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 19:13:01 -0600 Subject: [PATCH 04/21] Imagize client and serverside. --- client.Dockerfile | 25 +++++++++++++++++++++++++ compose.yml | 33 ++++++++++++++++++--------------- server.Dockerfile | 23 +++++++++++++++++++++++ 3 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 client.Dockerfile create mode 100644 server.Dockerfile diff --git a/client.Dockerfile b/client.Dockerfile new file mode 100644 index 0000000..23483f7 --- /dev/null +++ b/client.Dockerfile @@ -0,0 +1,25 @@ +# Build + +FROM node:lts-alpine + +RUN apk add --no-cache curl + +WORKDIR /client + +# Acquire dependencies + +COPY client/package*.json ./ + +RUN npm install + +# Build application for production + +COPY client./ . + +RUN npm run build + +# Deploy + +EXPOSE 3000 + +CMD ["npm", "run", "start"] diff --git a/compose.yml b/compose.yml index fa6b796..b41e2cf 100644 --- a/compose.yml +++ b/compose.yml @@ -1,33 +1,32 @@ services: server: restart: always - container_name: adr-server - image: node:lts-alpine - env_file: - - ./client/.env - volumes: - - ./server:/app + build: + dockerfile: "./server.Dockerfile" + context: "./server" + image: 7cav/cavapps-server:latest + container_name: apps-server ports: - "4000:4000" enviornment: API_TOKEN: CLIENT_TOKEN: - - working_dir: /app - command: /bin/sh -c "apk add curl && npm install && node server.js" + working_dir: /server healthcheck: test: ["CMD", "curl", "-f", "http://server:4000"] interval: 10s timeout: 10s retries: 5 start_period: 30s + networks: mynetwork client: restart: always - container_name: adr-client - image: node:lts-alpine - volumes: - - ./client:/app + build: + context: ./client + dockerfile: ./client.Dockerfile + image: 7cav/cavapps-client:latest + container_name: apps-client ports: - "80:3000" enviornment: @@ -37,8 +36,12 @@ services: NEXT_PUBLIC_INDIVIDUAL_API_URL: http://server:4000/roster/individual CACHE_TIMESTAMP_URL: http://server:4000/cache-timestamp GROUP_API_URL: http://server:4000/roster/groups - entrypoint: /bin/sh -c "until wget -q --spider http://server:4000; do echo 'Waiting for server...'; sleep 5; done; npm install && npm run build && npm run start" - working_dir: /app + working_dir: /client + depends_on: + server: + condition: service_healthy + networks: + - mynetwork networks: mynetwork: diff --git a/server.Dockerfile b/server.Dockerfile new file mode 100644 index 0000000..dad5bfa --- /dev/null +++ b/server.Dockerfile @@ -0,0 +1,23 @@ +# Build + +FROM node:lts-alpine + +RUN apk add --no-cache curl + +WORKDIR /server + +# Acquire dependencies + +COPY server/package*.json ./ + +RUN npm install + +# Copy server source code + +COPY server/. . + +# Deploy + +EXPOSE 4000 + +CMD ["node", "server.js"] \ No newline at end of file From fd0a0fb86f4c69ada246a229e1eb36c780373fb1 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:15:09 -0600 Subject: [PATCH 05/21] fix compose issues --- compose.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/compose.yml b/compose.yml index b41e2cf..65e61e1 100644 --- a/compose.yml +++ b/compose.yml @@ -8,17 +8,18 @@ services: container_name: apps-server ports: - "4000:4000" - enviornment: + environment: API_TOKEN: CLIENT_TOKEN: working_dir: /server healthcheck: - test: ["CMD", "curl", "-f", "http://server:4000"] + test: ["CMD", "curl", "-f", "http://localhost:4000"] interval: 10s timeout: 10s retries: 5 start_period: 30s - networks: mynetwork + networks: + - mynetwork client: restart: always @@ -29,7 +30,7 @@ services: container_name: apps-client ports: - "80:3000" - enviornment: + environment: NEXT_PUBLIC_CLIENT_TOKEN: COMBAT_API_URL: http://server:4000/roster/combat RESERVE_API_URL: http://server:4000/roster/reserves @@ -40,10 +41,10 @@ services: depends_on: server: condition: service_healthy + entrypoint: /bin/sh -c "until wget -q --spider http://server:4000; do echo 'Waiting for server...'; sleep 5; done; npm install && npm run build && npm run start" networks: - mynetwork networks: mynetwork: driver: bridge - external: true From 1b2d10c4a64049de17214a9f010d8842f190bed3 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:17:32 -0600 Subject: [PATCH 06/21] Move and fix up dockerfiles --- client.Dockerfile | 25 ------------------- client/client.Dockerfile | 21 ++++++++++++++++ server.Dockerfile => server/server.Dockerfile | 4 +-- 3 files changed, 23 insertions(+), 27 deletions(-) delete mode 100644 client.Dockerfile create mode 100644 client/client.Dockerfile rename server.Dockerfile => server/server.Dockerfile (81%) diff --git a/client.Dockerfile b/client.Dockerfile deleted file mode 100644 index 23483f7..0000000 --- a/client.Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -# Build - -FROM node:lts-alpine - -RUN apk add --no-cache curl - -WORKDIR /client - -# Acquire dependencies - -COPY client/package*.json ./ - -RUN npm install - -# Build application for production - -COPY client./ . - -RUN npm run build - -# Deploy - -EXPOSE 3000 - -CMD ["npm", "run", "start"] diff --git a/client/client.Dockerfile b/client/client.Dockerfile new file mode 100644 index 0000000..bd7a3e3 --- /dev/null +++ b/client/client.Dockerfile @@ -0,0 +1,21 @@ +# Build + +FROM node:lts-alpine + +RUN apk add --no-cache curl + +WORKDIR /client + +# Acquire dependencies + +COPY package*.json ./ + +RUN npm install + +# Copy source code + +COPY . . + +# Expose, Deployment is handled by compose to allow server to start first + +EXPOSE 3000 \ No newline at end of file diff --git a/server.Dockerfile b/server/server.Dockerfile similarity index 81% rename from server.Dockerfile rename to server/server.Dockerfile index dad5bfa..82c5fb2 100644 --- a/server.Dockerfile +++ b/server/server.Dockerfile @@ -8,13 +8,13 @@ WORKDIR /server # Acquire dependencies -COPY server/package*.json ./ +COPY package*.json ./ RUN npm install # Copy server source code -COPY server/. . +COPY . . # Deploy From efdcd1bae87ddbcf41be4f92b4512082efea0471 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:19:43 -0600 Subject: [PATCH 07/21] Fix enviorn calls in server --- server/controllers/cacheManager.js | 2 +- server/server.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/controllers/cacheManager.js b/server/controllers/cacheManager.js index 0f74b01..59f6572 100644 --- a/server/controllers/cacheManager.js +++ b/server/controllers/cacheManager.js @@ -1,6 +1,6 @@ const axios = require("axios"); const axiosRetry = require("axios-retry").default || require("axios-retry"); -const { API_TOKEN } = process.env.API_TOKEN; +const API_TOKEN = process.env.API_TOKEN; let cacheStatus = { combat: false, diff --git a/server/server.js b/server/server.js index 19c78d8..14edae5 100644 --- a/server/server.js +++ b/server/server.js @@ -4,7 +4,7 @@ const compression = require("compression"); const app = express(); const cors = require("cors"); const port = 4000; -const { CLIENT_TOKEN } = process.env.CLIENT_TOKEN; +const CLIENT_TOKEN = process.env.CLIENT_TOKEN; const { cacheTime, initializeCache } = require("./controllers/cacheManager"); const corsOptions = { From 1cf648688893c9537bec229b0db8d8da9b988e48 Mon Sep 17 00:00:00 2001 From: Vercin-G <97210222+Vercin-G@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:21:16 -0600 Subject: [PATCH 08/21] remove console logs --- client/app/adr/modules/ArrayMap.jsx | 1 - client/app/adr/modules/MilpacParse.jsx | 4 ---- 2 files changed, 5 deletions(-) diff --git a/client/app/adr/modules/ArrayMap.jsx b/client/app/adr/modules/ArrayMap.jsx index 262f801..adc5c61 100644 --- a/client/app/adr/modules/ArrayMap.jsx +++ b/client/app/adr/modules/ArrayMap.jsx @@ -7,7 +7,6 @@ milpac link, name and rank, and position title.*/ function ArrayMap(props) { let inputArray = props.inputArray; - console.log(inputArray); return (