sandbox-web-ide/dockerfile

41 lines
1000 B
Plaintext
Raw Normal View History

# docker build -t myimage .
# docker run --env-file backend/server/.env -p 3000:3000 -p 4000:4000 myimage
FROM node:20
# Security: Drop all capabilities
USER root
RUN apt-get update && apt-get install -y libcap2-bin
RUN setcap cap_net_bind_service=+ep /usr/local/bin/node
# Build backend
WORKDIR /backend
COPY backend/server/package*.json ./
RUN npm install
COPY backend/server/ .
RUN npm run build
# Build frontend
WORKDIR /frontend
COPY frontend/package*.json ./
RUN npm install
COPY frontend .
RUN npm run build
# Set working directory to the root directory
WORKDIR /
# Security: Create non-root user and assign ownership
RUN useradd -m appuser
RUN mkdir -p /backend/projects && chown -R appuser:appuser /backend/projects
USER appuser
# Start both backend and frontend
ENV BACKEND_PORT=4000
ENV FRONTEND_PORT=3000
EXPOSE 5173
EXPOSE $BACKEND_PORT
EXPOSE $FRONTEND_PORT
CMD ["sh", "-c", "cd /backend && PORT=$BACKEND_PORT npm run start & cd /frontend && PORT=$FRONTEND_PORT npm run start"]