Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Client run-in-development changes for local k8s #9470

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions Dockerfile_Dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# not slim because we need github depedencies
FROM node:18-buster-slim

RUN apt-get update
RUN apt-get install -y build-essential meson python3-testresources python3-venv python3-pip git procps git-lfs
# Create app directory
WORKDIR /app

RUN npm install -g npm lerna cross-env rimraf --loglevel notice

# to make use of caching, copy only package files and install dependencies
COPY package.json .
COPY packages/client/package.json ./packages/client/
COPY packages/client-core/package.json ./packages/client-core/
COPY packages/common/package.json ./packages/common/
COPY packages/editor/package.json ./packages/editor/
COPY packages/engine/package.json ./packages/engine/
COPY packages/instanceserver/package.json ./packages/instanceserver/
COPY packages/hyperflux/package.json ./packages/hyperflux/
COPY packages/engine/package.json ./packages/engine/
COPY packages/matchmaking/package.json ./packages/matchmaking/
COPY packages/server/package.json ./packages/server/
COPY packages/server-core/package.json ./packages/server-core/
COPY packages/taskserver/package.json ./packages/taskserver/
COPY packages/xrui/package.json ./packages/xrui/
COPY packages/ui/package.json ./packages/ui/
COPY packages/projects/package.json ./packages/projects/
COPY project-package-jsons ./
COPY patches/ ./patches/

#RUN npm ci --verbose # we should make lockfile or shrinkwrap then use npm ci for predicatble builds

ARG NODE_ENV
RUN npm install --loglevel notice --legacy-peer-deps

COPY . .

# copy then compile the code

ARG MYSQL_HOST
ARG MYSQL_PORT
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_DATABASE
ARG SERVER_HOST
ARG SERVER_PORT
ARG VITE_APP_HOST
ARG VITE_APP_PORT
ARG VITE_SERVER_HOST
ARG VITE_SERVER_PORT
ARG VITE_FILE_SERVER
ARG VITE_MEDIATOR_SERVER
ARG VITE_LOGIN_WITH_WALLET
ARG VITE_8TH_WALL
ARG VITE_INSTANCESERVER_HOST
ARG VITE_INSTANCESERVER_PORT
ARG VITE_LOCAL_BUILD
ARG VITE_READY_PLAYER_ME_URL
ARG VITE_DISABLE_LOG
ARG VITE_AVATURN_URL
ARG VITE_AVATURN_API
ENV MYSQL_HOST=$MYSQL_HOST
ENV MYSQL_PORT=$MYSQL_PORT
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV SERVER_HOST=$SERVER_HOST
ENV SERVER_PORT=$SERVER_PORT
ENV VITE_APP_HOST=$VITE_APP_HOST
ENV VITE_APP_PORT=$VITE_APP_PORT
ENV VITE_SERVER_HOST=$VITE_SERVER_HOST
ENV VITE_SERVER_PORT=$VITE_SERVER_PORT
ENV VITE_FILE_SERVER=$VITE_FILE_SERVER
ENV VITE_MEDIATOR_SERVER=$VITE_MEDIATOR_SERVER
ENV VITE_LOGIN_WITH_WALLET=$VITE_LOGIN_WITH_WALLET
ENV VITE_8TH_WALL=$VITE_8TH_WALL
ENV VITE_INSTANCESERVER_HOST=$VITE_INSTANCESERVER_HOST
ENV VITE_INSTANCESERVER_PORT=$VITE_INSTANCESERVER_PORT
ENV VITE_LOCAL_BUILD=$VITE_LOCAL_BUILD
ENV VITE_READY_PLAYER_ME_URL=$VITE_READY_PLAYER_ME_URL
ENV VITE_DISABLE_LOG=$VITE_DISABLE_LOG
ENV VITE_AVATURN_URL=$VITE_AVATURN_URL
ENV VITE_AVATURN_API=$VITE_AVATURN_API

ARG CACHE_DATE
RUN npx cross-env ts-node --swc scripts/check-db-exists.ts
RUN npm run build-client

RUN rm -r packages/client/public

RUN bash ./scripts/setup_helm.sh

ENV APP_ENV=development

CMD ["scripts/start-server.sh","development"]
6 changes: 4 additions & 2 deletions packages/client/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,9 @@ export default defineConfig(async () => {

resetSWFiles()

const isDevOrLocal = process.env.APP_ENV === 'development' || process.env.VITE_LOCAL_BUILD === 'true'
const isDevOrLocal =
process.env.FORCE_DEV_LOCAL_FALSE !== 'true' &&
(!(process.env.APP_ENV === 'development') || process.env.VITE_LOCAL_BUILD === 'true')

let base = `https://${process.env['APP_HOST'] ? process.env['APP_HOST'] : process.env['VITE_APP_HOST']}/`

Expand All @@ -258,7 +260,7 @@ export default defineConfig(async () => {
overlay: false
}
: false,
host: process.env['VITE_APP_HOST'],
host: true,
port: process.env['VITE_APP_PORT'],
headers: {
'Origin-Agent-Cluster': '?1'
Expand Down
3 changes: 2 additions & 1 deletion packages/common/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ Ethereal Engine. All Rights Reserved.
* Config settings (for client and isomorphic engine usage).
*/
const localBuildOrDev =
globalThis.process.env['APP_ENV'] === 'development' || globalThis.process.env['VITE_LOCAL_BUILD'] === 'true'
globalThis.process.env['FORCE_DEV_LOCAL_FALSE'] !== 'true' &&
(!(globalThis.process.env['APP_ENV'] === 'development') || globalThis.process.env['VITE_LOCAL_BUILD'] === 'true')

export function validateEmail(email: string): boolean {
return /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(email)
Expand Down
77 changes: 53 additions & 24 deletions scripts/build_microk8s.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ set -x

TAG=$1
CLEAN=$2
APP_ENV=$3

if [ -z "$SERVER_HOST" ]
then
Expand Down Expand Up @@ -157,30 +158,58 @@ echo "Tag is: $TAG"
# docker tag $REGISTRY_HOST:32000/root-builder $REGISTRY_HOST:32000/root-builder:$TAG
# docker push $REGISTRY_HOST:32000/root-builder:$TAG

docker buildx build \
--network=host \
--cache-to type=inline \
-t $REGISTRY_HOST:32000/etherealengine \
--build-arg NODE_ENV=$NODE_ENV \
--build-arg MYSQL_HOST=$MYSQL_HOST \
--build-arg MYSQL_PORT=$MYSQL_PORT \
--build-arg MYSQL_PASSWORD=$MYSQL_PASSWORD \
--build-arg MYSQL_USER=$MYSQL_USER \
--build-arg MYSQL_DATABASE=$MYSQL_DATABASE \
--build-arg SERVER_HOST=$SERVER_HOST \
--build-arg SERVER_PORT=$SERVER_PORT \
--build-arg VITE_APP_HOST=$VITE_APP_HOST \
--build-arg VITE_SERVER_HOST=$VITE_SERVER_HOST \
--build-arg VITE_FILE_SERVER=$VITE_FILE_SERVER \
--build-arg VITE_MEDIATOR_SERVER=$VITE_MEDIATOR_SERVER \
--build-arg VITE_INSTANCESERVER_HOST=$VITE_INSTANCESERVER_HOST \
--build-arg VITE_READY_PLAYER_ME_URL=$VITE_READY_PLAYER_ME_URL \
--build-arg VITE_DISABLE_LOG=$VITE_DISABLE_LOG \
--build-arg VITE_8TH_WALL=$VITE_8TH_WALL \
--build-arg VITE_LOGIN_WITH_WALLET=$VITE_LOGIN_WITH_WALLET \
--build-arg VITE_AVATURN_URL=$VITE_AVATURN_URL \
--build-arg VITE_AVATURN_API=$VITE_AVATURN_API .

if [[ "$APP_ENV" == "development" ]]; then
docker buildx build \
--network=host \
--cache-to type=inline \
-t $REGISTRY_HOST:32000/etherealengine \
-f Dockerfile_Dev \
--build-arg NODE_ENV=$NODE_ENV \
--build-arg APP_ENV=$APP_ENV \
--build-arg MYSQL_HOST=$MYSQL_HOST \
--build-arg MYSQL_PORT=$MYSQL_PORT \
--build-arg MYSQL_PASSWORD=$MYSQL_PASSWORD \
--build-arg MYSQL_USER=$MYSQL_USER \
--build-arg MYSQL_DATABASE=$MYSQL_DATABASE \
--build-arg SERVER_HOST=$SERVER_HOST \
--build-arg SERVER_PORT=$SERVER_PORT \
--build-arg VITE_APP_HOST=$VITE_APP_HOST \
--build-arg VITE_SERVER_HOST=$VITE_SERVER_HOST \
--build-arg VITE_FILE_SERVER=$VITE_FILE_SERVER \
--build-arg VITE_MEDIATOR_SERVER=$VITE_MEDIATOR_SERVER \
--build-arg VITE_INSTANCESERVER_HOST=$VITE_INSTANCESERVER_HOST \
--build-arg VITE_READY_PLAYER_ME_URL=$VITE_READY_PLAYER_ME_URL \
--build-arg VITE_DISABLE_LOG=$VITE_DISABLE_LOG \
--build-arg VITE_8TH_WALL=$VITE_8TH_WALL \
--build-arg VITE_LOGIN_WITH_WALLET=$VITE_LOGIN_WITH_WALLET \
--build-arg VITE_AVATURN_URL=$VITE_AVATURN_URL \
--build-arg VITE_AVATURN_API=$VITE_AVATURN_API .
else
docker buildx build \
--network=host \
--cache-to type=inline \
-t $REGISTRY_HOST:32000/etherealengine \
-f Dockerfile \
--build-arg NODE_ENV=$NODE_ENV \
--build-arg MYSQL_HOST=$MYSQL_HOST \
--build-arg MYSQL_PORT=$MYSQL_PORT \
--build-arg MYSQL_PASSWORD=$MYSQL_PASSWORD \
--build-arg MYSQL_USER=$MYSQL_USER \
--build-arg MYSQL_DATABASE=$MYSQL_DATABASE \
--build-arg SERVER_HOST=$SERVER_HOST \
--build-arg SERVER_PORT=$SERVER_PORT \
--build-arg VITE_APP_HOST=$VITE_APP_HOST \
--build-arg VITE_SERVER_HOST=$VITE_SERVER_HOST \
--build-arg VITE_FILE_SERVER=$VITE_FILE_SERVER \
--build-arg VITE_MEDIATOR_SERVER=$VITE_MEDIATOR_SERVER \
--build-arg VITE_INSTANCESERVER_HOST=$VITE_INSTANCESERVER_HOST \
--build-arg VITE_READY_PLAYER_ME_URL=$VITE_READY_PLAYER_ME_URL \
--build-arg VITE_DISABLE_LOG=$VITE_DISABLE_LOG \
--build-arg VITE_8TH_WALL=$VITE_8TH_WALL \
--build-arg VITE_LOGIN_WITH_WALLET=$VITE_LOGIN_WITH_WALLET \
--build-arg VITE_AVATURN_URL=$VITE_AVATURN_URL \
--build-arg VITE_AVATURN_API=$VITE_AVATURN_API .
fi
docker tag $REGISTRY_HOST:32000/etherealengine $REGISTRY_HOST:32000/etherealengine:$TAG
docker push $REGISTRY_HOST:32000/etherealengine:$TAG

Expand Down
7 changes: 6 additions & 1 deletion scripts/start-server.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#!/bin/bash
APP_ENV=$1
[ "$SERVER_MODE" = "task" ] && (cd packages/taskserver && npm run start)
[ "$SERVER_MODE" = "client" ] && (cd packages/client && npm run start)
if [ "$APP_ENV" = "development" ]; then
[ "$SERVER_MODE" = "client" ] && (cd packages/client && npm run dev)
else
[ "$SERVER_MODE" = "client" ] && (cd packages/client && npm run start)
fi
[ "$SERVER_MODE" = "realtime" ] && (cd packages/instanceserver && npm run start)
[ "$SERVER_MODE" = "api" ] && (cd packages/server && npm run start)