build(Dockerfile-app): add Dockerfile for building the app image

feat(docker-compose.yml): use pre-built image for api service instead of building from local file
This commit is contained in:
Danny Avila 2023-04-21 14:38:23 -04:00
parent 901375bfa0
commit f5ff91cfbd
2 changed files with 41 additions and 5 deletions

35
Dockerfile-app Normal file
View file

@ -0,0 +1,35 @@
# ./Dockerfile
FROM node:19-alpine
WORKDIR /app
# Copy package.json files for client and api
COPY /client/package*.json /app/client/
COPY /api/package*.json /app/api/
# Install dependencies for both client and api
RUN cd /app/client && npm ci
RUN cd /app/api && npm ci
# Copy the current directory contents into the container
COPY /client/ /app/client/
COPY /api/ /app/api/
# Set the memory limit for Node.js
ENV NODE_OPTIONS="--max-old-space-size=2048"
# Build webpack artifacts for the client
RUN cd /app/client && npm run build
# Create the necessary directory and copy the client side code to the api directory
RUN mkdir -p /app/api/client && cp -R /app/client/dist /app/api/client/dist
# Make port 3080 available to the world outside this container
EXPOSE 3080
# Expose the server to 0.0.0.0
ENV HOST=0.0.0.0
# Run the app when the container launches
WORKDIR /app/api
CMD ["npm", "start"]

View file

@ -15,13 +15,14 @@ services:
# - api # - api
api: api:
ports: ports:
- 3080:3080 # Change it to 9000:3080 if you want to use nginx - 3080:3080 # Change it to 9000:3080 to use nginx
depends_on: depends_on:
- mongodb - mongodb
image: node-api # image: node-api # Uncomment this to build from local file
build: # build:
context: . # context: .
target: node-api # target: node-api
image: chatgptclone/app:0.3.3 # Comment this & uncomment above to build from local file
restart: always restart: always
env_file: env_file:
- ./api/.env - ./api/.env