Как мне изменить приложение Laravel Docker на среду тестирования?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как мне изменить приложение Laravel Docker на среду тестирования?

Сообщение Anonymous »

У меня есть простая конфигурация docker-compose.yml для моего приложения Laravel:

Код: Выделить всё

services:
acme-app:
container_name: acme-app
build:
context: ./devops/php
restart: unless-stopped
volumes:
- ./:/var/www
- ./devops/php/custom.ini:/usr/local/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;
index index.php index.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 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;
}
}
Тогда я могу просто получить к нему доступ через localhost:8000, проблема в том, что он не может загрузить мои тестовые переменные, мне нужен загрузочный файл Laravel, загружающий его.< /p>
Я проделал этот простой путь для проверки переменных:

Код: Выделить всё

Route::get('/', function () {
dd([
'APP_ENV' => env('APP_ENV'),
'DB_CONNECTION' => env('DB_CONNECTION')
]);
});
В настоящее время я использую DB_CONNECTION=sqlite в своем .env.testing и DB_CONNECTION=mysql в своем .env >,
Если я изменю свой .env APP_ENV=testing, он отобразит строку тестирования:

Код: Выделить всё

array:2 [▼ // routes/web.php:7
"APP_ENV" => "testing"
"DB_CONNECTION" => "mysql"
]
Но на самом деле мои переменные .env.testing не загружаются, как вы можете видеть, вместо этого он все равно загружает mysql из моего .env из .env.example.
Единственный способ заставить это работать — изменить app.php и связать его в цепочку в конце - Метод >create():

Код: Выделить всё

->create()->loadEnvironmentFrom('.env.testing');
Теперь он загружается правильно:

Код: Выделить всё

array:2 [▼ // routes/web.php:7
"APP_ENV" => "testing"
"DB_CONNECTION" => "sqlite"
]
Проблема в том, что мне нужно, чтобы она менялась динамически или, по крайней мере, была возможность изменить ее внутри моего контейнера Docker, на котором работает мое приложение, я хочу иметь возможность переключать свои переменные на локальные и тестирование, поэтому у меня есть две среды для тестирования в моем браузере.
Конечно, запуск тестов с помощью PHPUnit работает нормально, он загружает .env.testing правильно, но это кажется возможным, поскольку Laravel воссоздает приложение каждый раз, когда вы запускаете тесты с некоторой специальной логикой загрузки для PHPUnit.

Подробнее здесь: https://stackoverflow.com/questions/791 ... nvironment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»