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..242306b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Dockerfile for the event management server + +FROM node:17-alpine3.12 + +# Create directory for the app +RUN mkdir /home/server + +# Selectively copy the required files and directories +ADD prisma/ /home/app/prisma/ +ADD scripts/ /home/app/scripts/ +ADD src/ /home/app/src/ +COPY package-lock.json /home/app +COPY package.json /home/app +COPY tsconfig.json /home/app + +# Change directory into the container +WORKDIR /home/app + +# Install dependencies +RUN npm i -g typescript +RUN npm i + +# 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..2157a8f 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,13 @@ services: ports: - 5432:5432 container_name: "postgres" - #server: - # build: . - # restart: always - # container_name: "server" + server: + build: . + restart: always + container_name: "server" + ports: + - ${PORT}:${PORT} + environment: + - PORT=${PORT} + - DATABASE_URL=${DATABASE_URL} + - 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