diff --git a/Dockerfile b/Dockerfile index 42b88884..c72d1c48 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,25 @@ FROM node:20 + +RUN mkdir /zeppelin +RUN chown node:node /zeppelin + USER node -COPY --chown=node:node . /zeppelin +ARG API_URL + +# Install dependencies before copying over any other files +COPY --chown=node:node package.json package-lock.json /zeppelin +RUN mkdir /zeppelin/backend +COPY --chown=node:node backend/package.json /zeppelin/backend +RUN mkdir /zeppelin/shared +COPY --chown=node:node shared/package.json /zeppelin/shared +RUN mkdir /zeppelin/dashboard +COPY --chown=node:node dashboard/package.json /zeppelin/dashboard -# Install dependencies for all packages WORKDIR /zeppelin -RUN npm ci +RUN npm install + +COPY --chown=node:node . /zeppelin # Build backend WORKDIR /zeppelin/backend @@ -17,4 +31,4 @@ RUN npm run build # Prune dev dependencies WORKDIR /zeppelin -RUN npm prune --production +RUN npm prune --omit=dev diff --git a/docker-compose.standalone.yml b/docker-compose.standalone.yml index 195c2507..47434725 100644 --- a/docker-compose.standalone.yml +++ b/docker-compose.standalone.yml @@ -17,7 +17,7 @@ services: volumes: - mysql-data:/var/lib/mysql # - ./docker/production/data/mysql:/var/lib/mysql - command: --authentication-policy=mysql_native_password + #command: --authentication-policy=mysql_native_password healthcheck: test: "/usr/bin/mysql --user=root --password=\"${STANDALONE_MYSQL_ROOT_PASSWORD}\" --execute \"SHOW DATABASES;\"" interval: 5s @@ -37,23 +37,28 @@ services: depends_on: mysql: condition: service_healthy - build: + build: &build context: . + args: + # Used at compile-time by dashboard + API_URL: environment: HOST_MODE: standalone - working_dir: /zeppelin + env_file: + - .env + working_dir: /zeppelin/backend command: ["npm", "run", "migrate-prod"] api: depends_on: migrate: condition: service_completed_successfully - build: - context: . + build: *build restart: on-failure environment: HOST_MODE: standalone - DEBUG: ${DEBUG-} + env_file: + - .env working_dir: /zeppelin/backend command: ["npm", "run", "start-api-prod"] @@ -61,12 +66,12 @@ services: depends_on: migrate: condition: service_completed_successfully - build: - context: . + build: *build restart: on-failure environment: HOST_MODE: standalone - DEBUG: ${DEBUG-} + env_file: + - .env working_dir: /zeppelin/backend command: ["npm", "run", "start-bot-prod"] @@ -74,11 +79,11 @@ services: depends_on: migrate: condition: service_completed_successfully - build: - context: . + build: *build restart: on-failure environment: HOST_MODE: standalone - DEBUG: ${DEBUG-} + env_file: + - .env working_dir: /zeppelin/dashboard command: ["node", "serve.js"]