diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..390c521 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +**/node_modules +build \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..648d60f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM node:16-alpine AS development +ENV NODE_ENV development +WORKDIR /app +COPY package.json ./ +COPY yarn.lock ./ +RUN yarn +COPY . ./ +EXPOSE 3000 +CMD [ "yarn", "start" ] + +FROM node:16-alpine AS builder +ENV NODE_ENV production +WORKDIR /app +COPY package.json ./ +COPY yarn.lock ./ +RUN yarn install --production +COPY . ./ +RUN yarn build + +FROM nginx:1.21.0-alpine AS production +COPY --from=builder /app/build /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] + diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..5bd2526 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,13 @@ +version: "3.8" + +services: + app: + container_name: app-dev + image: app-dev + build: + context: . + target: development + volumes: + - ./src:/app/src + ports: + - 3000:3000 diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..8a5cd27 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,9 @@ +version: "3.8" + +services: + app: + container_name: app-prod + image: app-prod + build: + context: . + target: production \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..d64c1a5 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,9 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html/; + include /etc/nginx/mime.types; + try_files $uri $uri/ /index.html; + } +} \ No newline at end of file