Add docker stuff

This commit is contained in:
Gabriel Brown 2025-02-27 11:44:25 -06:00
parent 991fd13184
commit c010ea4ea7
2 changed files with 59 additions and 0 deletions

36
docker/Dockerfile Normal file
View File

@ -0,0 +1,36 @@
# Stage 1: Build the project
FROM node:18 as builder
# Set the working directory in the container
WORKDIR /app
# Copy package.json and pnpm-lock.yaml or package-lock.json (if using npm) to the working directory
COPY ../package.json ../pnpm-lock.yaml ./
# Install dependencies
RUN npm install -g pnpm
RUN pnpm install
# Copy project files into the docker image
COPY ../ .
# Build the project
RUN pnpm run build
# Stage 2: Serve the app using a lightweight node image
FROM node:16-alpine
# Install a simple http server
RUN npm install -g serve
# Set the working directory to /app
WORKDIR /app
# Copy built assets from the builder stage
COPY --from=builder /app/dist /app
# Expose port 5000 for the server
EXPOSE 5000
# Start the server using the `serve` package
CMD ["serve", "-s", ".", "-l", "5000"]

23
docker/docker-compose.yml Normal file
View File

@ -0,0 +1,23 @@
version: '3.8'
services:
bang-web-server:
build:
context: ../ # point to the parent directory where package.json and source code reside
dockerfile: docker/Dockerfile # specific path to the Dockerfile
container_name: bang
domainname: bang.gbrown.org
hostname: bang
networks:
- node_apps
ports:
- "5000:5000"
tty: true
restart: unless-stopped
volumes:
- ../:/app # mount the parent directory to /app in the container
command: serve -s /app -l 5000
networks:
node_apps:
external: true