Este projeto consiste em dois aplicativos Next.js separados, organizados para funcionar como um sistema cliente-servidor. Ambos os aplicativos são gerenciados e executados simultaneamente com Docker Compose.
- Client App: Responsável por buscar e consumir as APIs do servidor.
- Server App: Distribui as APIs usadas exclusivamente pelo cliente.
Antes de executar o projeto, certifique-se de ter as seguintes ferramentas instaladas:
git clone https://github.com/Dev-LDRC/Dockerized_Client-Server_NextJS.git
cd Dockerized_Client-Server_NextJS
CASO NÃO QUEIRA ALTERAR AS PORTAS, PULE A PROXIMA ETAPA
-
Configure as variáveis de ambiente:
Configure os arquivos
.env
para o cliente e servidor nas pastas correspondentes
(client_app
eapi-service
):./app_frontend/client_app/.env
:
NEXT_PUBLIC_CLIENT_PORT = <your_client_side_port> NEXT_PUBLIC_SERVER_PORT = <your_server_side_port>
./app_backend/api-service/.env
:
NEXT_PUBLIC_SERVER_PORT = <your_server_side_port> NEXT_PUBLIC_CLIENT_PORT = <your_client_side_port>
-
Configure em quais portas serão executadas pelo NextJS de ambos os arquivos
package.json
das pastas correspondentes (client_app
eapi-service
):./app_frontend/client_app/package.json
:
{ "name": "client_app", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev -p <your_client_side_port>", "build": "next build", "start": "next start -p <your_client_side_port>", "lint": "next lint" }, ... }
./app_backend/api-service/package.json
:
{ "name": "api-service", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev -p <your_server_side_port>", "build": "next build", "start": "next start -p <your_server_side_port>", "lint": "next lint" }, ... }
-
Configure em quais portas do conteiner serão exportas de ambos os arquivos
Dockerfile
das pastas correspondentes (client_app
eapi-service
):./app_frontend/client_app/Dockerfile
:
... RUN npm install --only=production EXPOSE <your_client_side_port> CMD [ "npm", "start" ]
./app_backend/api-service/Dockerfile
:
... RUN npm install --only=production EXPOSE <your_server_side_port> CMD [ "npm", "start" ]
-
Configure em quais portas da sua maquina serão exportas no arquivo
compose.yml
:./compose.yml
:
services: client_app: env_file: - ./app_frontend/client_app/.env build: context: ./app_frontend/client_app dockerfile: Dockerfile container_name: consumer_client ports: - "<your_client_side_port>:<your_client_side_port>" restart: unless-stopped develop: watch: - action: rebuild path: ./app_frontend/client_app server_app: env_file: - ./app_backend/api-service/.env build: context: ./app_backend/api-service dockerfile: Dockerfile container_name: api-backend ports: - "<your_server_side_port>:<your_server_side_port>" restart: unless-stopped develop: watch: - action: rebuild path: ./app_backend/api-service
docker compose up --build
Se você não quiser que a aplicação não se prenda ao terminal execute o mesmo comando acima com a flag -d
, assim:
docker compose up -d --build