diff --git a/entrypoint.sh b/backend/entrypoint.sh similarity index 81% rename from entrypoint.sh rename to backend/entrypoint.sh index b7817a22..a4818852 100644 --- a/entrypoint.sh +++ b/backend/entrypoint.sh @@ -1,7 +1,7 @@ #!/bin/sh # Start the backend server in the background -node server.js & +node /backend/server.js & # Start Nginx in the foreground nginx -g "daemon off;" \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index f5061495..56605af4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,23 +1,55 @@ # Build frontend -FROM node:18-slim AS frontend-build +FROM ubuntu:20.04 AS frontend-build WORKDIR /app +# Install Node.js and npm +RUN apt-get update && apt-get install -y \ + curl \ + gnupg2 \ + lsb-release \ + && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && apt-get clean COPY frontend/package*.json ./frontend/ RUN npm --prefix frontend install COPY frontend/ ./frontend/ RUN npm --prefix frontend run build # Build backend -FROM node:18-slim AS backend-build +FROM ubuntu:20.04 AS backend-build WORKDIR /backend +# Install Node.js and npm +RUN apt-get update && apt-get install -y \ + curl \ + gnupg2 \ + lsb-release \ + && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && apt-get clean COPY backend/package*.json ./ RUN npm install COPY backend/ . # Production image -FROM nginx:alpine +FROM ubuntu:20.04 +# Install Node.js and nginx +RUN apt-get update && apt-get install -y \ + curl \ + nginx \ + gnupg2 \ + lsb-release \ + && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && apt-get clean + # Copy frontend static files to nginx folder COPY --from=frontend-build /app/frontend/dist /usr/share/nginx/html # Copy backend application COPY --from=backend-build /backend /backend -# Start backend and frontend servers -CMD ["sh", "-c", "node /backend/server.js & nginx -g 'daemon off;'"] \ No newline at end of file +# Copy entrypoint script +COPY --from=backend-build /backend/entrypoint.sh /backend/entrypoint.sh + +# Make entrypoint.sh executable +RUN chmod +x /backend/entrypoint.sh + +# Use entrypoint script to start backend and frontend servers +ENTRYPOINT ["/backend/entrypoint.sh"] \ No newline at end of file