From 514b79a9412816e2dbc50d7dbd821311be57fdd6 Mon Sep 17 00:00:00 2001 From: Danilo Carolino Date: Thu, 13 Feb 2025 17:49:26 -0300 Subject: [PATCH] build: dockerize application to build and run in a container --- .dockerignore | 33 +++++++++++++++++++++++++++++++++ Dockerfile | 14 ++++++++++++++ docker-compose.yml | 13 +++++++++++++ nginx.conf | 11 +++++++++++ package.json | 5 ++++- 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..690199f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,33 @@ +# Ignorar node_modules local para evitar conflitos +node_modules +.yarn +.pnp +.pnp.js + +# Ignorar arquivos de configuração locais +.env +.env.* +!.env.production # Permitir a versão de produção, se existir + +# Ignorar diretórios de build e cache +dist +.cache +.vite +.output + +# Ignorar arquivos do Git +.git +.gitignore + +# Ignorar logs e arquivos do sistema +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.DS_Store +Thumbs.db + +# Ignorar arquivos de config +Dockerfile +docker-compose.* +/*/**/*.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..257c602 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:20-alpine AS build +WORKDIR /app +COPY package.json yarn.lock ./ +RUN yarn install --frozen-lockfile +COPY . . +RUN yarn build + +FROM nginx:alpine +RUN apk add --no-cache bash +RUN rm -rf /usr/share/nginx/html/* +COPY --from=build /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 8080 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5b22b09 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +services: + web: + image: website + build: + context: . + dockerfile: ./Dockerfile + stdin_open: true + tty: true + volumes: + - .:/app:rw + ports: + - "8080:8080" + network_mode: "host" diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..4978fbd --- /dev/null +++ b/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 8080; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } +} \ No newline at end of file diff --git a/package.json b/package.json index 14c4584..e0cdf9d 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,11 @@ { "name": "me", "private": true, - "version": "0.0.0", + "version": "0.1.0", "type": "module", + "engines": { + "node": ">=20" + }, "scripts": { "dev": "vite --host", "build": "vite build",