[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Gerson Hugo Samuel Chiule
Criador Gerson Hugo Samuel Chiule 03/06/2025

Olá Prof Carlos!

Alguma ideia de como podemos aplicar o conceito de healthy (para checkar a saude) no container app?

Manager Carlos Ferreira 03/06/2025

Pode incluir no seu docker-compose.yml:

healthcheck:

      test: ["CMD", "curl", "-f", "http://host.docker.internal:3000/health"]

      interval: 30s

      timeout: 5s

      retries: 3

      start_period: 10s

Carlos Ferreira
Criador Gerson Hugo Samuel Chiule 03/06/2025

INCLUÍ... MAS ESTÁ DAR STATUS UNHEALTY. AQUI ESÁ O MEU DOCKER-COMPOSE

services:

    # sige v2 image

    app:

        build:

            context: .

            dockerfile: Dockerfile

        container_name: sige-v2-app

        restart: always

        working_dir: /var/www/

        volumes:

            - ./:/var/www

        networks:

            - sige_v2_network

        healthcheck:

            test: ["CMD", "curl", "-f", "http://host.docker.internal:3000/health"]

            interval: 30s

            timeout: 5s

            retries: 3

            start_period: 10s

 

    # nginx

    nginx:

        container_name: sige-v2-nginx

        image: nginx:alpine

        restart: always

        ports:

            - "8000:80"

        volumes:

            - ./:/var/www

            - ./docker/nginx/:/etc/nginx/conf.d/

        networks:

            - sige_v2_network

 

    # mysql

    mysql:

        container_name: sige-v2-mysql

        image: mysql:5.7.22

        # platform: linux/x86_64

        restart: always

        environment:

            MYSQL_DATABASE: ${DB_DATABASE}

            MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

            MYSQL_PASSWORD: ${DB_PASSWORD}

            MYSQL_USER: ${DB_USERNAME}

        volumes:

            - ./.docker/mysql/dbdata:/var/lib/mysql

        ports:

            - "3389:3306"

        networks:

            - sige_v2_network

 

    # redis

    redis:

        container_name: sige-v2-redis

        image: redis:latest

        networks:

            - sige_v2_network

 

    # queue

    queue:

        build:

            context: .

            dockerfile: Dockerfile

        container_name: sige-v2-queue

        restart: always

        command: "php artisan queue:work"

        volumes:

            - ./:/var/www

        depends_on:

            - redis

            - app

        networks:

            - sige_v2_network

 

    # schedule

    schedule:

        build:

            context: .

            dockerfile: Dockerfile

        container_name: sige-v2-schedule

        restart: always

        command: "php artisan schedule:work"

        volumes:

            - ./:/var/www

        depends_on:

            - redis

            - app

        networks:

            - sige_v2_network

 

networks:

    sige_v2_network:

        driver: bridge

Gerson Hugo Samuel Chiule
Criador Gerson Hugo Samuel Chiule 03/06/2025

ESTE É O FICHEIRO LARAVEL.CONF

server {

    listen 80;

    index index.php;

    root /var/www/public;

 

    client_max_body_size 51g;

    client_body_buffer_size 512k;

    client_body_in_file_only clean;

 

    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass app:9000;

        fastcgi_index index.php;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param PATH_INFO $fastcgi_path_info;

    }

 

    location / {

        try_files $uri $uri/ /index.php?$query_string;

        gzip_static on;

    }

 

    error_log  /var/log/nginx/error.log;

    access_log /var/log/nginx/access.log;

}

 

Gerson Hugo Samuel Chiule
Manager Carlos Ferreira 03/06/2025

Precisa criar a rota /health na sua aplicação, ou no seu nginx

Outra, se o seu container do nginx está expondo a porta 8090 por exemplo, o seu health check precisa bater nessa porta.

Carlos Ferreira
Criador Gerson Hugo Samuel Chiule 03/06/2025

TIVE QUE ACRESCENTAR ISSO PARA FUNCIONAR:

extra_hosts:

            - "host.docker.internal:host-gateway"

DOCKER-COMPOSE.YML FINAL:

services:

    # sige v2 image

    app:

        build:

            context: .

            dockerfile: Dockerfile

        container_name: sige-v2-app

        extra_hosts:

            - "host.docker.internal:host-gateway"

        restart: always

        working_dir: /var/www/

        volumes:

            - ./:/var/www

        depends_on:

            mysql:

                condition: service_healthy

            redis:

                condition: service_healthy

        networks:

            - sige_v2_network

        healthcheck:

            test: ["CMD", "curl", "-f", "http://host.docker.internal:8000/health"]

            interval: 30s

            timeout: 5s

            retries: 3

            start_period: 10s

 

    # nginx

    nginx:

        container_name: sige-v2-nginx

        image: nginx:alpine

        restart: always

        ports:

            - "8000:80"

        volumes:

            - ./:/var/www

            - ./docker/nginx/:/etc/nginx/conf.d/

        networks:

            - sige_v2_network

 

    # mysql

    mysql:

        container_name: sige-v2-mysql

        image: mysql:5.7.22

        # platform: linux/x86_64

        restart: always

        environment:

            MYSQL_DATABASE: ${DB_DATABASE}

            MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

            MYSQL_PASSWORD: ${DB_PASSWORD}

            MYSQL_USER: ${DB_USERNAME}

        volumes:

            - ./.docker/mysql/dbdata:/var/lib/mysql

        ports:

            - "3389:3306"

        networks:

            - sige_v2_network

        healthcheck:

            test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u${DB_USERNAME}", "-p${DB_PASSWORD}"]

            interval: 10s

            timeout: 5s

            retries: 5

 

    # redis

    redis:

        container_name: sige-v2-redis

        image: redis:latest

        healthcheck:

            test: ["CMD", "redis-cli", "ping"]

            interval: 1s

            timeout: 3s

            retries: 30

        networks:

            - sige_v2_network

 

    # queue

    queue:

        # build:

        #     context: .

        #     dockerfile: Dockerfile

        image: sige-v2-app # Reuse image

        container_name: sige-v2-queue

        restart: always

        command: "php artisan queue:work"

        volumes:

            - ./:/var/www

        depends_on:

            - redis

            - app

        networks:

            - sige_v2_network

 

    # schedule

    schedule:

        # build:

        #     context: .

        #     dockerfile: Dockerfile

        image: sige-v2-app # Reuse image

        container_name: sige-v2-schedule

        restart: always

        command: "php artisan schedule:work"

        volumes:

            - ./:/var/www

        depends_on:

            - redis

            - app

        networks:

            - sige_v2_network

 

networks:

    sige_v2_network:

        driver: bridge

---------------------------------------------------------------------------------------

OBRIGADO!

Gerson Hugo Samuel Chiule
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!