44 lines
868 B
Docker
44 lines
868 B
Docker
# Start from NodeJS image
|
|
FROM node:22-alpine
|
|
|
|
# Workdir definition
|
|
WORKDIR /usr/src/back
|
|
|
|
# Environment declaration variables
|
|
ARG NODE_ENV="dev"
|
|
ARG DB_HOST="postgres"
|
|
ARG DB_NAME="briques"
|
|
ARG DB_USER="briques_db"
|
|
ARG DB_PASSWORD="briques_password"
|
|
ARG DB_PORT=5432
|
|
|
|
COPY package.json ./
|
|
|
|
RUN npm install
|
|
|
|
RUN npm install -g pm2
|
|
|
|
# Copy sources
|
|
COPY . .
|
|
|
|
# Setting up environment
|
|
RUN echo "NODE_ENV=${NODE_ENV}" > .env \
|
|
&& echo "DB_HOST=${DB_HOST}" >> .env \
|
|
&& echo "DB_NAME=${DB_NAME}" >> .env \
|
|
&& echo "DB_USER=${DB_USER}" >> .env \
|
|
&& echo "DB_PORT=${DB_PORT}" >> .env \
|
|
&& echo "DB_PASSWORD=${DB_PASSWORD}" >> .env
|
|
|
|
# Compilation des fichiers TypeScript
|
|
RUN npm run build
|
|
|
|
# Review permissions
|
|
RUN chown -R node:node ./
|
|
RUN chmod -R u=rwx,g=,o= ./
|
|
|
|
# Expose port
|
|
EXPOSE 3000
|
|
|
|
# Start app
|
|
CMD ["pm2", "start", "dist/app.js", "--no-daemon"]
|