php – Uma vez que altero meu aplicativo Laravel Docker para…

php - erro laravel: Classe alvo [validator] ...

Eu tenho isso simples docker-compose.yml formato para meu aplicativo Laravel:

services:
    acme-app:
        container_name: acme-app
        build:
            context: ./devops/php
        restart: unless-stopped
        volumes:
            - ./:/var/www
            - ./devops/php/custom.ini:/usr/sítio/etc/php/conf.d/custom.ini
        networks:
            - acme-network
    acme-server:
        container_name: acme-server
        restart: unless-stopped
        image: nginx:1.27.0-alpine
        ports:
            - ${FORWARD_APP_PORT:-8000}:80
        volumes:
            - ./:/var/www
            - ./devops/nginx/conf.d:/etc/nginx/conf.d/
        networks:
            - acme-network
networks:
    acme-network:
        driver: bridge
volumes:
    acme-mariadb:

app.conf

server {
    listen 80;
    índice índice.php índice.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    client_max_body_size 50M;
    location ~ .php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass acme-app:9000;
        fastcgi_index índice.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/ /índice.php?$query_string;
        gzip_static on;
    }
}

Portanto posso acessá-lo via localhost:8000o problema é que não há uma vez que carregar minhas variáveis ​​de teste, preciso que o Laravel bootstrap carregue-as.

Fiz esta rota simples para testar as variáveis:

Route::get("https://stackoverflow.com/", function Sua visita nos ajuda a continuar oferecendo o melhor para você! {
    dd([
        'APP_ENV' => env('APP_ENV'),
     Sua visita nos ajuda a continuar oferecendo o melhor para você!   'DB_CONNECTION' => env('DB_CONNECTION')
    ]);
});

Atualmente estou usando o DB_CONNECTION=sqlite no meu .env.testinge DB_CONNECTION=mysql no meu .env,

Se eu mudar meu .env APP_ENV=testingmostra a string de teste:

array:2 [▼ // routes/web.php:7
  "APP_ENV" => "testing"
  "DB_CONNECTION" => "mysql"
]

Mas na verdade não carrega meu .env.testing vars, uma vez que você pode ver, ainda carrega mysql do meu .env em vez de .env.example.

A única maneira que descobri de fazer funcionar foi mudando o app.php e encadeando isso no final de ->create() método:

->create()->loadEnvironmentFrom('.env.testing');

Agora ele carrega corretamente:

array:2 [▼ // routes/web.php:7
  "APP_ENV" => "testing"
  "DB_CONNECTION" => "sqlite"
]

O problema é que preciso que ele seja confuso dinamicamente, ou pelo menos uma maneira de alterá-lo dentro do meu contêiner Docker executando meu aplicativo, quero poder mudar minhas variáveis ​​para sítio e testinglogo tenho dois ambientes para testá-lo em meu navegador.

Evidente, de alguma forma, executar testes com PHPUnit funciona perfeitamente, ele carrega o .env.testing corretamente, mas parece ser provável porque o Laravel recria a emprego toda vez que você executa testes com alguma lógica de inicialização customizada para o PHPUnit.

Tags:

Crédito: Manancial Original

Sua visita nos ajuda a continuar oferecendo o melhor para você! font-size: 30px; color: #003BB0; display: block; margin-top: 10px;">Descubra o PHP Orientado a Objetos e dê um upgrade na sua carreira de desenvolvedor web!
Adriano Pina

Adriano Pina

Análise de Sistemas | SEO e Google Ads | Fundador da Loja Script PHP Aqui & Marca Shoslh de tecnologia

Especialista em transformar ideias em soluções digitais e acelerar o crescimento online.

Deixe um comentário

Tem perguntas? Nos envia sua mensagem 24/7!

(17) 99100-0874

Endereço & Contato

Centro, Interior de São Paulo
E-mail: [email protected]

Links Úteis
BAIXAR APP | SCRIPT PHP AQUI
Certificados
0
    0
    Seu carrinho
    Seu carrinho está vazio

    Usamos cookies para garantir que oferecemos a melhor experiência em nosso site. 

       

    X

    Clique em um de nossos representantes abaixo para conversar no WhatsApp ou envie um email para: 📧 [email protected]

    Precisa de ajuda fale conosco?