diff --git a/.docker/.dockerignore b/.docker/.dockerignore deleted file mode 100644 index 6f8b9bfd5..000000000 --- a/.docker/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!bin/ -!Dockerfile \ No newline at end of file diff --git a/.docker/Dockerfile b/.docker/Dockerfile index c99946554..94d160685 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,14 +1,17 @@ -FROM node:16.18.1-alpine3.16 +FROM node:20-alpine -COPY bin/entrypoint.sh /usr/local/bin/entrypoint.sh +WORKDIR /usr/src/app -RUN mkdir -p /usr/src/app \ - && apk update \ - && apk add --no-cache bash==5.1.16-r2 \ - && rm -rf /var/cache/apk/* \ - && rm -rf /tmp/* +RUN apk add --no-cache bash git -WORKDIR /usr/src/app +COPY package*.json ./ + +RUN if [ -f package-lock.json ]; then \ + npm ci --legacy-peer-deps; \ + else \ + npm install --legacy-peer-deps; \ + fi + +EXPOSE 5173 -EXPOSE 6006 -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +CMD ["npm", "run", "docs:dev", "--", "--host", "0.0.0.0"] diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..28f10f0c9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,37 @@ +# Dependencies +node_modules/ + +# Build outputs +dist/ + +# Git +.git/ +.gitignore + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Documentation build +docs/.vitepress/dist/ + +# Test coverage +coverage/ + +# Logs +*.log +npm-debug.log* + +# Misc +*.md +!package.json +!package-lock.json + +# Local docs assets (optional exclusion) +docs/.vitepress/cache/ \ No newline at end of file diff --git a/README.md b/README.md index 5c9eafada..18bac94d7 100644 --- a/README.md +++ b/README.md @@ -73,13 +73,18 @@ e importe o arquivo de tokens na sua tag script. git clone https://github.com/Sysvale/cuida.git ``` -- Instale as dependências e suba o container docker: +- Suba o container docker: ```bash -docker-compose up -d +./setup.sh ``` -A documentação estará disponível na porta `5173`, em [http://localhost:5173/](http://localhost:5173). +A porta onde o projeto estará disponível será exibida no terminal. + +- Instale as dependências no container: +```bash +./on-server.sh npm i +``` - Caso não queira usar docker, instale as dependências com: @@ -95,15 +100,16 @@ npm i npm run docs:dev ``` -### Testando-o +- Usando o container docker: -- Utilizando o docker: ```bash -docker-compose exec cuida npm run test +./on-server.sh npm run docs:dev ``` -ou +### Testando-o + +- Utilizando o docker: ```bash ./on-server.sh npm run test diff --git a/docker-compose.yml b/docker-compose.yml index 835862da5..c0287c9cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,9 +2,21 @@ version: '3.7' services: cuida: - container_name: main - image: sysvaleops/cuida:dev-1.0 + container_name: cuida_dev + build: + context: . + dockerfile: .docker/Dockerfile volumes: - .:/usr/src/app + - node_modules:/usr/src/app/node_modules ports: - - 6006:6006 + - "5173:5173" + environment: + - NODE_ENV=development + stdin_open: true + tty: true + working_dir: /usr/src/app + command: ["npm", "run", "docs:dev", "--", "--host", "0.0.0.0"] + +volumes: + node_modules: diff --git a/on-server.sh b/on-server.sh index ce0431f29..727276439 100755 --- a/on-server.sh +++ b/on-server.sh @@ -1 +1 @@ -docker-compose exec cuida $* +docker compose exec cuida $* diff --git a/setup.sh b/setup.sh new file mode 100755 index 000000000..798983277 --- /dev/null +++ b/setup.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +set -e + +find_port() { + local port=$1 + while :; do + if ! nc -z localhost "$port" 2>/dev/null; then + echo "$port" + return 0 + fi + ((port++)) + done +} + +restore_compose() { + sed -i '' "s/- \"$PORT:5173\"/- \"5173:5173\"/" docker-compose.yml 2>/dev/null || \ + sed -i "s/- \"$PORT:5173\"/- \"5173:5173\"/" docker-compose.yml +} + +if nc -z localhost 5173 2>/dev/null; then + PORT=$(find_port 5174) + echo "Port 5173 in use, using port $PORT" +else + PORT=5173 +fi + +# Use temp file for cross-platform sed +cp docker-compose.yml docker-compose.yml.bak +trap 'mv docker-compose.yml.bak docker-compose.yml' EXIT + +# macOS compatible sed (add empty string after -i) +sed -i '' "s/- \"5173:5173\"/- \"$PORT:5173\"/" docker-compose.yml 2>/dev/null || \ +sed -i "s/- \"5173:5173\"/- \"$PORT:5173\"/" docker-compose.yml + +if ! docker compose up -d; then + echo "Docker compose failed, restoring original docker-compose.yml" + mv docker-compose.yml.bak docker-compose.yml + exit 1 +fi + +# Restore original (remove trap first) +trap - EXIT +mv docker-compose.yml.bak docker-compose.yml + +echo "Docs available at http://localhost:$PORT" \ No newline at end of file