feat: ensure .env file exists for docker compose and auto-inject in payloads
This commit is contained in:
parent
d3eba6c1b7
commit
712d60c75b
3 changed files with 16 additions and 0 deletions
|
|
@ -22,6 +22,10 @@ public function handle(Service $service, bool $pullLatestImages = false, bool $s
|
|||
$service->isConfigurationChanged(save: true);
|
||||
$commands[] = 'cd '.$service->workdir();
|
||||
$commands[] = "echo 'Saved configuration files to {$service->workdir()}.'";
|
||||
// Ensure .env file exists before docker compose tries to load it
|
||||
// This is defensive programming - saveComposeConfigs() already creates it,
|
||||
// but we guarantee it here in case of any edge cases or manual deployments
|
||||
$commands[] = 'touch .env';
|
||||
if ($pullLatestImages) {
|
||||
$commands[] = "echo 'Pulling images.'";
|
||||
$commands[] = 'docker compose pull';
|
||||
|
|
|
|||
|
|
@ -3029,6 +3029,12 @@ private function stop_running_container(bool $force = false)
|
|||
|
||||
private function start_by_compose_file()
|
||||
{
|
||||
// Ensure .env file exists before docker compose tries to load it (defensive programming)
|
||||
$this->execute_remote_command(
|
||||
["touch {$this->workdir}/.env", 'hidden' => true],
|
||||
["touch {$this->configuration_dir}/.env", 'hidden' => true],
|
||||
);
|
||||
|
||||
if ($this->application->build_pack === 'dockerimage') {
|
||||
$this->application_deployment_queue->addLogEntry('Pulling latest images from the registry.');
|
||||
$this->execute_remote_command(
|
||||
|
|
|
|||
|
|
@ -1300,6 +1300,9 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||
if ($depends_on->count() > 0) {
|
||||
$payload['depends_on'] = $depends_on;
|
||||
}
|
||||
// Auto-inject .env file so Coolify environment variables are available inside containers
|
||||
// This makes Applications behave consistently with manual .env file usage
|
||||
$payload['env_file'] = ['.env'];
|
||||
if ($isPullRequest) {
|
||||
$serviceName = addPreviewDeploymentSuffix($serviceName, $pullRequestId);
|
||||
}
|
||||
|
|
@ -2279,6 +2282,9 @@ function serviceParser(Service $resource): Collection
|
|||
if ($depends_on->count() > 0) {
|
||||
$payload['depends_on'] = $depends_on;
|
||||
}
|
||||
// Auto-inject .env file so Coolify environment variables are available inside containers
|
||||
// This makes Services behave consistently with Applications
|
||||
$payload['env_file'] = ['.env'];
|
||||
|
||||
$parsedServices->put($serviceName, $payload);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue