1
resposta

Desafio Escalando os Serviços

Tentei escalar os serviços realizando os seguintes procedimentos:

1 - Criei um arquivo chamado "academico-php-web2.php" e mudei apenas a linha "php -S web-academico:8181 -t public" para levantar a aplicação na porta 8181.

#!/usr/bin/env bash

if [ ! -d vendor ]; then
  composer install
fi

php artisan migrate
php artisan db:seed --force
php -S web-academico:8181 -t public

2 - No docker-compose.yml, copiei a parte referente ao web-academico e colei abaixo da seguinte forma:

web-academico2:
    build: ./academico-php-web
    environment:
      JWT_KEY: chave-jwt
      DB_CONNECTION: pgsql
      DB_HOST: postgre-academico
      DB_DATABASE: academico
      DB_USERNAME: usuario_academico
      DB_PASSWORD: senhapg
      APP_KEY: c08cbbfd6eefc83ac6d23c4c791277e4
      APP_URL: http://web-academico:8181
      APP_ENV: local
      APP_DEBUG: "true"
    volumes:
      - ./academico-php-web/:/app
      - type: bind
        source: ./academico-php-web2.sh
        target: /app/entrypoint.sh
    working_dir: /app
    command: sh ./entrypoint.sh
    ports:
      - 8181:8181
    depends_on:
      - postgre-academico

3 - Inclui no meu apo-gateway.conf um upstream e coloquei o server location /academico/ apontando para meu upstream:

upstream lb-academico {
   server http://web-academico:8080/;
   server http://web-academico:8181/;
}

server {
    listen 80;

    location /financeiro/ {
        proxy_pass http://web-financeiro:9501/;
    }

    location /mkt/ {
        proxy_pass http://web-mkt:3000/;
    }

    location /academico/ {
        proxy_pass http://lb-academico;
    }
}

Após efetuar estes procedimentos o console emite tantos logs do api-gateway_1 que não consegui pegar tudo, mas fica emitindo esta mensagem:

web-academico2_1      | Nothing to migrate.
web-academico_1       | Nothing to migrate.
web-academico2_1      | Seeding: Database\Seeders\CourseSeeder
web-academico_1       | Seeding: Database\Seeders\CourseSeeder
web-academico2_1      | Seeded:  Database\Seeders\CourseSeeder (320.12ms)
web-academico2_1      | Database seeding completed successfully.
web-academico_1       | Seeded:  Database\Seeders\CourseSeeder (297.91ms)
web-academico_1       | Database seeding completed successfully.
web-academico2_1      | [Thu Aug  4 01:56:11 2022] Failed to listen on web-academico:8181 (reason: Cannot assign requested address)
web-academico_1       | [Thu Aug  4 01:56:12 2022] PHP 8.0.21 Development Server (http://web-academico:8080) started
alura-ms_web-academico2_1 exited with code 1
alura-ms_api-gateway_1 exited with code 1
consumer-academico_1  | Retrying
alura-ms_api-gateway_1 exited with code 1
consumer-academico_1  | Retrying

Tive q desfazer as alterações para continuar utilizando as aplicações, mas não sei o que fiz de errado... Sei que vou precisar me aprofundar mais em docker, mas teoricamente não podia simplesmente copiar a linha de cima e copiar abaixo sem no mínimo alterar as portas, pois não faria sentido ter uma outra instância da mesma aplicação rodando na mesma porta (nem iria iniciar)...

1 resposta

Olá Ronaldo, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Meus parabéns por se desafiar colocando em prática o que está aprendendo junto à Alura, essa é uma boa forma de fixar o conteúdo.

O erro "Failed to listen on web-academico:8181 (reason: Cannot assign requested address)" indica que há um conflito de endereço IP ou porta utilizada pelo microserviço web-academico. Isso geralmente acontece quando há um conflito de endereço IP ou quando a porta já está sendo utilizada por outro serviço ou processo no seu sistema.

Para te auxiliar no aprofundamento do seu conhecimento sobre Docker, e assim poder implementar da melhor forma possível os desafios apresentados. Gostaria de aproveitar a oportunidade e deixar uma recomendação de um curso da Alura que aborda sobre Docker. Neste curso é apresentado sobre a subida, criação e personalização de container Docker, entre outros temas relacionados com o Docker.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!