diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a097306 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/**/.idea +/**/node_modules diff --git a/backend/Dockerfile b/backend/Dockerfile index bea3bdc..9b1b602 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,13 +1,14 @@ -FROM node:alpine AS builder +FROM node:14.3.0-alpine AS builder WORKDIR /app -COPY ./package.json ./ +COPY package.json . +COPY package-lock.json . RUN npm install COPY . . RUN npm run build -FROM node:alpine +FROM node:14.3.0-alpine WORKDIR /app -COPY --from=builder /app ./ +COPY --from=builder /app . EXPOSE 3000 CMD ["npm", "run", "start:prod"] diff --git a/backend/Dockerfile.dev b/backend/Dockerfile.dev new file mode 100644 index 0000000..5f37230 --- /dev/null +++ b/backend/Dockerfile.dev @@ -0,0 +1,12 @@ +FROM node:14.3.0-alpine AS builder +WORKDIR /app +ENV ENVIRONMENT dev + +COPY package.json . +COPY package-lock.json . +RUN npm install +COPY . . + +EXPOSE 3000 +CMD ["npm", "run", "start:${ENVIRONMENT}"] + diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 7a4a087..10cf4d4 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -4,49 +4,22 @@ services: frontend: build: context: ./frontend - dockerfile: Dockerfile + dockerfile: Dockerfile.dev networks: - proxy env_file: .env - labels: - - traefik.enable=true - - # HTTP + Redirect - - traefik.http.routers.tsotr-frontend.entrypoints=web - - traefik.http.routers.tsotr-frontend.rule=Host(`tsotr.humenius.me`) - - traefik.http.routers.tsotr-frontend.middlewares=redirect@file - - # HTTPS + Port + network - - traefik.http.routers.tsotr-frontend-secure.entrypoints=web-secure - - traefik.http.routers.tsotr-frontend-secure.rule=Host(`tsotr.humenius.me`) - - traefik.http.routers.tsotr-frontend-secure.tls=true - - traefik.http.routers.tsotr-frontend-secure.tls.certresolver=letsencrypt - - traefik.http.services.tsotr-frontend.loadbalancer.server.port=80 - - traefik.docker.network=proxy + ports: + - 5000:5000 backend: - # image: docker.humenius.me/humenius/ts-onlinetime-ranks-backend:latest build: context: ./backend - dockerfile: Dockerfile + dockerfile: Dockerfile.dev networks: - proxy env_file: .env - labels: - - traefik.enable=true - - # HTTP + Redirect - - traefik.http.routers.tsotr-backend.entrypoints=web - - traefik.http.routers.tsotr-backend.rule=Host(`api.tsotr.humenius.me`) - - traefik.http.routers.tsotr-backend.middlewares=redirect@file - - # HTTPS + Port + network - - traefik.http.routers.tsotr-backend-secure.entrypoints=web-secure - - traefik.http.routers.tsotr-backend-secure.rule=Host(`api.tsotr.humenius.me`) - - traefik.http.routers.tsotr-backend-secure.tls=true - - traefik.http.routers.tsotr-backend-secure.tls.certresolver=letsencrypt - - traefik.http.services.tsotr-backend.loadbalancer.server.port=3000 - - traefik.docker.network=proxy + ports: + - 5001:3000 networks: proxy: diff --git a/docker-compose.yml b/docker-compose.yml index e3991d6..e081759 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,44 +2,47 @@ version: '3.7' services: frontend: - image: docker.humenius.me/humenius/ts-onlinetime-ranks-frontend:latest + build: + context: ./frontend + dockerfile: Dockerfile networks: - proxy + env_file: .env labels: - traefik.enable=true + - traefik.http.services.tsotr-frontend.loadbalancer.server.port=5000 # HTTP + Redirect - traefik.http.routers.tsotr-frontend.entrypoints=web - traefik.http.routers.tsotr-frontend.rule=Host(`tsotr.humenius.me`) - traefik.http.routers.tsotr-frontend.middlewares=redirect@file - # HTTPS + Port + network + # HTTPS - traefik.http.routers.tsotr-frontend-secure.entrypoints=web-secure - traefik.http.routers.tsotr-frontend-secure.rule=Host(`tsotr.humenius.me`) - - traefik.http.routers.tsotr-frontend-secure.tls=true - traefik.http.routers.tsotr-frontend-secure.tls.certresolver=letsencrypt - - traefik.http.services.tsotr-frontend.loadbalancer.server.port=80 - - traefik.docker.network=proxy backend: - image: docker.humenius.me/humenius/ts-onlinetime-ranks-backend:latest + # image: docker.humenius.me/humenius/ts-onlinetime-ranks-backend:latest + build: + context: ./backend + dockerfile: Dockerfile networks: - proxy + env_file: .env labels: - traefik.enable=true + - traefik.http.services.tsotr-backend.loadbalancer.server.port=3000 # HTTP + Redirect - traefik.http.routers.tsotr-backend.entrypoints=web - traefik.http.routers.tsotr-backend.rule=Host(`api.tsotr.humenius.me`) - traefik.http.routers.tsotr-backend.middlewares=redirect@file - # HTTPS + Port + network + # HTTPS - traefik.http.routers.tsotr-backend-secure.entrypoints=web-secure - traefik.http.routers.tsotr-backend-secure.rule=Host(`api.tsotr.humenius.me`) - - traefik.http.routers.tsotr-backend-secure.tls=true - traefik.http.routers.tsotr-backend-secure.tls.certresolver=letsencrypt - - traefik.http.services.tsotr-backend.loadbalancer.server.port=3000 - - traefik.docker.network=proxy networks: proxy: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 2692525..2e14938 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,15 +1,15 @@ -FROM node:alpine as builder -WORKDIR '/app' +FROM node:14.3.0-alpine as builder +WORKDIR /app +ENV PATH /app/node_modules/.bin:$PATH COPY ./package.json ./ RUN yarn COPY . . RUN yarn build -FROM nginx:alpine -LABEL maintainer="Kevin Reis " +FROM node:14.3.0-alpine +WORKDIR /app +COPY --from=builder /app/build . +RUN yarn global add serve -COPY --from=builder /app/build /usr/share/nginx/html -COPY nginx/nginx.conf /etc/nginx/conf.d - -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] +EXPOSE 5000 +CMD ["serve", "-s", ""] diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 72dc03d..e01c805 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -1,10 +1,9 @@ -FROM node:alpine +FROM node:14.3.0-alpine +WORKDIR /app +ENV PATH /app/node_modules/.bin:$PATH -WORKDIR '/app' - -COPY package.json . +COPY package.json ./ RUN yarn - COPY . . CMD ["yarn", "start"]