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);
|
$service->isConfigurationChanged(save: true);
|
||||||
$commands[] = 'cd '.$service->workdir();
|
$commands[] = 'cd '.$service->workdir();
|
||||||
$commands[] = "echo 'Saved configuration files to {$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) {
|
if ($pullLatestImages) {
|
||||||
$commands[] = "echo 'Pulling images.'";
|
$commands[] = "echo 'Pulling images.'";
|
||||||
$commands[] = 'docker compose pull';
|
$commands[] = 'docker compose pull';
|
||||||
|
|
|
||||||
|
|
@ -3029,6 +3029,12 @@ private function stop_running_container(bool $force = false)
|
||||||
|
|
||||||
private function start_by_compose_file()
|
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') {
|
if ($this->application->build_pack === 'dockerimage') {
|
||||||
$this->application_deployment_queue->addLogEntry('Pulling latest images from the registry.');
|
$this->application_deployment_queue->addLogEntry('Pulling latest images from the registry.');
|
||||||
$this->execute_remote_command(
|
$this->execute_remote_command(
|
||||||
|
|
|
||||||
|
|
@ -1300,6 +1300,9 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
||||||
if ($depends_on->count() > 0) {
|
if ($depends_on->count() > 0) {
|
||||||
$payload['depends_on'] = $depends_on;
|
$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) {
|
if ($isPullRequest) {
|
||||||
$serviceName = addPreviewDeploymentSuffix($serviceName, $pullRequestId);
|
$serviceName = addPreviewDeploymentSuffix($serviceName, $pullRequestId);
|
||||||
}
|
}
|
||||||
|
|
@ -2279,6 +2282,9 @@ function serviceParser(Service $resource): Collection
|
||||||
if ($depends_on->count() > 0) {
|
if ($depends_on->count() > 0) {
|
||||||
$payload['depends_on'] = $depends_on;
|
$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);
|
$parsedServices->put($serviceName, $payload);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue