Skip to content
Snippets Groups Projects
Commit a487e61b authored by abdu's avatar abdu
Browse files

add Dockerfile for build process, add docker-compose file for container...

add Dockerfile for build process, add docker-compose file for container properties, remove passwords from application properties
parent 2b22a8dc
No related branches found
No related tags found
No related merge requests found
# need node/npm to run "npm run build" for our vue frontend
FROM node:20-alpine as build-frontend
# working directory for our frontend
WORKDIR /app
# copying package.json to root folder and installing dependencies
COPY ./frontend/package*.json ./
RUN npm install
# copying all of frontend to root folder in container
COPY ./frontend .
# building frontend
RUN npm run build
################################################################
# getting jdk 17 (we use this version in development too)
FROM eclipse-temurin:17-jre-alpine as build-backend
# working directory for backend
WORKDIR /app
# copying frontend to static folder so spring can serve it
COPY --from build-frontend /app/dist /app/src/main/resources/static
# copying backend to root folder in container
COPY . .
# making maven executable (we had permission issues before adding this)
RUN chmod +x ./mvnw
# building backend with maven wrapper
RUN ./mvnw clean package -DskipTests
# exposing port, same port as we used in development
EXPOSE 9876
ENTRYPOINT ["java", "-jar", "target/todo-0.0.1-SNAPSHOT.jar"]
services:
# mongodb stuff
mongodb:
# official mongodb container
image: mongo:latest
# container-name
container_name: mongodb
# env variables
environment:
# creates user with name tododbuser
MONGO_INITDB_ROOT_USERNAME: tododbuser
# sets password for user
MONGO_INITDB_ROOT_PASSWORD: tododbadminpassword
# creates collection/table
MONGO_INITDB_DATABASE: todo
# default mongo port
ports:
- "27017:27017"
# for data persistence, if I understood correctly its like a
# virtual drive for storage of the db between reboots
volumes:
- ./data/db:/data/db
# backend stuff
backend:
# builds backend from root
build: .
# the internal network our backend will be using
networks:
- todo-network
# mongodb env variables for connection
environment:
MONGO_USER: tododbuser
MONGO_PASSWORD: tododbadminpassword
MONGO_HOST: mongodb
MONGO_PORT: 27017
MONGO_DB: todo
# same port as we use in our application properties
# and for fetch requests in our frontend
ports:
- "9876:9876"
depends_on:
- mongodb
# were gonna use this network for both our backend and frontend
networks:
# network name
todo-network:
# default driver I guess? idk, saw it on the official docs
driver: bridge
\ No newline at end of file
spring.application.name=todo spring.application.name=todo
server.port=9876 server.port=9876
spring.data.mongodb.uri=mongodb://tododbuser:tododbadminpassword@192.168.179.24:27017/todo spring.data.mongodb.uri=mongodb://${MONGO_USER}:${MONGO_PASSWORD}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DB}
#openapi setup #openapi setup
springdoc.api-docs.path=/v3/api-docs springdoc.api-docs.path=/v3/api-docs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment