diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..aad3962 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +.git +.gitignore +Dockerfile +.dockerignore +README.md +LICENSE +node_modules/ +coverge/ +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..026834e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:23-alpine3.21 +RUN apk upgrade --update-cache --available + +LABEL version=0.0.1 description="BadgeDex" + +# Create a group and user && Create directory for files +RUN mkdir /app && addgroup -S badgedex && adduser -h /app -S badgedex -g "Badgedex User" -G badgedex && chown -R badgedex:badgedex /app && chmod -R 755 /app + +#Switch to working directory +WORKDIR /app + +# Tell docker that all future commands should run as the appuser user +USER badgedex + +# Bundle app source. Create .dockerignore not copy all files from source directory +COPY --chown=badgedex:badgedex . . + +#Install dependencies +RUN npm install + +# Expose API port +EXPOSE 3000 +#Start node application +ENTRYPOINT ["npm"] + +CMD [ "start" ] \ No newline at end of file