diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e7b3e6b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +*.env +dist/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8916e84 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# Dockerfile for the event management server + +FROM node:17-alpine3.12 + +# Create directory for the app +RUN mkdir /app + +# Copy dependency files +COPY package.json package-lock.json /app + +# Change directory into the container +WORKDIR /app + +# Install dependencies +RUN npm i -g typescript +RUN npm i + +# Selectively copy the required files and directories +ADD prisma/ /app/prisma/ +ADD scripts/ /app/scripts/ +ADD src/ /app/src/ +COPY tsconfig.json /app + +# Generate the prisma client +RUN npx prisma generate + +# Compile TypeScript to JavaScript +RUN tsc + +CMD ["sh", "scripts/docker-entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index 3edb025..72d2e5c 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,11 +14,17 @@ services: image: postgres restart: always environment: + - POSTGRES_USER=server - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - ports: - - 5432:5432 container_name: "postgres" - #server: - # build: . - # restart: always - # container_name: "server" + server: + build: . + restart: always + container_name: "server" + ports: + - ${PORT:-3000}:${PORT:-3000} + environment: + - PORT=${PORT:-3000} + - DATABASE_URL=postgresql://server:${DATABASE_PASSWORD}@postgres:5432/management?schema=public + - DATABASE_USER=server + - DATABASE_PASSWORD=${DATABASE_PASSWORD} diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh new file mode 100644 index 0000000..fd37bb0 --- /dev/null +++ b/scripts/docker-entrypoint.sh @@ -0,0 +1,11 @@ +# Entry point for docker + +if ! test -f INITIALIZED; then + # Migrate the database + # TODO: Update to use prisma migrate + npx prisma db push + touch INITIALIZED +fi + +# Start the server +node ./dist/app.js