diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..cde02647 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +## build image +FROM node:13.12.0-buster-slim as build + +## set working directory +WORKDIR /usr/src/app + +## add `/usr/src/app/node_modules/.bin` to $PATH +ENV PATH /usr/src/app/node_modules/.bin:$PATH + +## install and cache app dependencies +COPY package.json /usr/src/app/package.json + +## install app dependencies +RUN npm install --silent + +## copy files +COPY . /usr/src/app + +## build production app +RUN npm run build + +## production environment +FROM nginx:1.17.9-alpine + +## copy build artifacts to nginx +COPY --from=build /usr/src/app/build /usr/share/nginx/html + +## copy custom nginx config +RUN rm /etc/nginx/conf.d/default.conf +COPY nginx/nginx.conf /etc/nginx/conf.d + +## export port 80 +EXPOSE 80 + +## run nginx server +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/Dockerfile-dev b/Dockerfile-dev index 9658f7d5..ffac8c3e 100644 --- a/Dockerfile-dev +++ b/Dockerfile-dev @@ -10,7 +10,7 @@ ENV PATH /usr/src/app/node_modules/.bin:$PATH ## install and cache app dependencies COPY package.json /usr/src/app/package.json -# install app dependencies +## install app dependencies RUN npm install --silent ## start app diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 2ee69010..e0e71435 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -6,7 +6,7 @@ services: tty: true build: context: . - dockerfile: Dockerfile + dockerfile: Dockerfile-dev volumes: - '.:/usr/src/app' - '/usr/src/app/node_modules' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..94ae2268 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.7' + +services: + reactive-resume: + container_name: reactive-resume + build: + context: . + dockerfile: Dockerfile + expose: + - '80' + ports: + - '80:80' diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 00000000..758a646e --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,17 @@ +server { + + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + error_page 500 502 503 504 /50x.html; + + location = /50x.html { + root /usr/share/nginx/html; + } + +} \ No newline at end of file