Browse Source

refactor: Copy types and required .git contents into docker images and only mount for development

Owen Diffey 1 year ago
parent
commit
f0b8e85a1e

+ 5 - 4
backend/Dockerfile

@@ -3,8 +3,7 @@ FROM node:18 AS backend_node_modules
 RUN mkdir -p /opt/app
 WORKDIR /opt/app
 
-COPY backend/package.json /opt/app/package.json
-COPY backend/package-lock.json /opt/app/package-lock.json
+COPY backend/package.json backend/package-lock.json /opt/app/
 
 RUN npm install --silent
 
@@ -13,11 +12,13 @@ FROM node:18 AS musare_backend
 ARG CONTAINER_MODE=production
 ENV CONTAINER_MODE=${CONTAINER_MODE}
 
-RUN mkdir -p /opt/app /opt/types
+RUN mkdir -p /opt/.git/refs /opt/types /opt/app
 WORKDIR /opt/app
 
+COPY .git/config .git/HEAD /opt/.git/
+COPY .git/refs /opt/.git/refs
+COPY types /opt/types
 COPY backend /opt/app
-COPY .git /opt/app/.git
 COPY --from=backend_node_modules /opt/app/node_modules node_modules
 
 ENTRYPOINT bash -c '([[ "${CONTAINER_MODE}" == "development" ]] && npm install --silent); npm run docker:dev'

+ 1 - 1
backend/config/default.json

@@ -70,7 +70,7 @@
 		"enabled": false,
 		"from": "",
 		"smtp": {
-			"host": "smtp.mailgun.org",
+			"host": "",
 			"port": 587,
 			"auth": {
 				"user": "",

+ 1 - 1
backend/config/template.json

@@ -18,7 +18,7 @@
 	"mail": {
 		"enabled": true,
 		"smtp": {
-			"host": "smtp.eu.mailgun.org",
+			"host": "smtp.my.domain",
 			"port": 587,
 			"auth": {
 				"user": "CHANGE_ME",

+ 2 - 2
backend/index.js

@@ -40,8 +40,8 @@ const printVersion = () => {
 
 	try {
 		let gitFolder = null;
-		if (fs.existsSync(".git/HEAD")) gitFolder = ".git";
-		else if (fs.existsSync("../.git/HEAD")) gitFolder = "../.git";
+		if (fs.existsSync("../.git/HEAD")) gitFolder = "../.git";
+		else if (fs.existsSync(".git/HEAD")) gitFolder = ".git";
 
 		if (gitFolder) {
 			const head_contents = fs.readFileSync(`${gitFolder}/HEAD`).toString().replaceAll("\n", "");

+ 4 - 0
docker-compose.dev.yml

@@ -3,10 +3,14 @@ services:
     ports:
       - "${BACKEND_HOST:-0.0.0.0}:${BACKEND_PORT:-8080}:8080"
     volumes:
+      - ./.git:/opt/.git:ro
+      - ./types:/opt/types
       - ./backend:/opt/app
 
   frontend:
     volumes:
+      - ./.git:/opt/.git:ro
+      - ./types:/opt/types
       - ./frontend:/opt/app
 
   mongo:

+ 0 - 5
docker-compose.yml

@@ -8,9 +8,7 @@ services:
       target: musare_backend
     restart: ${RESTART_POLICY:-unless-stopped}
     volumes:
-      - ./.git:/opt/app/.git:ro
       - ./backend/config:/opt/app/config
-      - ./types:/opt/types
     environment:
       - CONTAINER_MODE=${CONTAINER_MODE:-production}
       - MUSARE_SITENAME=${MUSARE_SITENAME:-Musare}
@@ -48,9 +46,6 @@ services:
     user: root
     ports:
       - "${FRONTEND_HOST:-0.0.0.0}:${FRONTEND_PORT:-80}:80"
-    volumes:
-      - ./.git:/opt/app/.git:ro
-      - ./types:/opt/types
     environment:
       - CONTAINER_MODE=${CONTAINER_MODE:-production}
       - FRONTEND_MODE=${FRONTEND_MODE:-production}

+ 6 - 7
frontend/Dockerfile

@@ -3,8 +3,7 @@ FROM node:18 AS frontend_node_modules
 RUN mkdir -p /opt/app
 WORKDIR /opt/app
 
-COPY frontend/package.json /opt/app/package.json
-COPY frontend/package-lock.json /opt/app/package-lock.json
+COPY frontend/package.json frontend/package-lock.json /opt/app/
 
 RUN npm install --silent
 
@@ -30,17 +29,17 @@ ENV FRONTEND_MODE=${FRONTEND_MODE} \
     MUSARE_DEBUG_GIT_LATEST_COMMIT=${MUSARE_DEBUG_GIT_LATEST_COMMIT} \
     MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT=${MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT}
 
-RUN apt update && apt install nginx -y
+RUN apt-get update && apt-get install nginx -y
 
-RUN mkdir -p /opt/app /opt/types
+RUN mkdir -p /opt/.git/refs /opt/types /opt/app /run/nginx
 WORKDIR /opt/app
 
+COPY .git/config .git/HEAD /opt/.git/
+COPY .git/refs /opt/.git/refs
+COPY types /opt/types
 COPY frontend /opt/app
-COPY .git /opt/app/.git
 COPY --from=frontend_node_modules /opt/app/node_modules node_modules
 
-RUN mkdir -p /run/nginx
-
 RUN bash -c '([[ "${FRONTEND_MODE}" == "development" ]] && exit 0) || npm run prod'
 
 RUN chmod u+x entrypoint.sh

+ 2 - 2
frontend/vite.config.js

@@ -30,8 +30,8 @@ const fetchVersionAndGitInfo = () => {
 
 	try {
 		let gitFolder = null;
-		if (fs.existsSync(".git/HEAD")) gitFolder = ".git";
-		else if (fs.existsSync("../.git/HEAD")) gitFolder = "../.git";
+		if (fs.existsSync("../.git/HEAD")) gitFolder = "../.git";
+		else if (fs.existsSync(".git/HEAD")) gitFolder = ".git";
 
 		if (gitFolder) {
 			const headContents = fs