commit
db4a4c74fc
@ -37,14 +37,14 @@ class Init extends Command
|
|||||||
$this->cleanup_in_progress_application_deployments();
|
$this->cleanup_in_progress_application_deployments();
|
||||||
$this->cleanup_stucked_helper_containers();
|
$this->cleanup_stucked_helper_containers();
|
||||||
}
|
}
|
||||||
private function cleanup_stucked_helper_containers() {
|
private function cleanup_stucked_helper_containers()
|
||||||
|
{
|
||||||
$servers = Server::all();
|
$servers = Server::all();
|
||||||
foreach ($servers as $server) {
|
foreach ($servers as $server) {
|
||||||
if ($server->isFunctional()) {
|
if ($server->isFunctional()) {
|
||||||
CleanupHelperContainersJob::dispatch($server);
|
CleanupHelperContainersJob::dispatch($server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private function alive()
|
private function alive()
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ class Init extends Command
|
|||||||
// private function cleanup_ssh()
|
// private function cleanup_ssh()
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// TODO: it will cleanup id.root@host.docker.internal
|
// TODO: it will cleanup id.root@host.docker.internal
|
||||||
// try {
|
// try {
|
||||||
// $files = Storage::allFiles('ssh/keys');
|
// $files = Storage::allFiles('ssh/keys');
|
||||||
// foreach ($files as $file) {
|
// foreach ($files as $file) {
|
||||||
@ -101,15 +101,15 @@ class Init extends Command
|
|||||||
$applications = Application::all();
|
$applications = Application::all();
|
||||||
foreach ($applications as $application) {
|
foreach ($applications as $application) {
|
||||||
if (!data_get($application, 'environment')) {
|
if (!data_get($application, 'environment')) {
|
||||||
ray('Application without environment', $application->name);
|
echo 'Application without environment' . $application->name . 'deleting\n';
|
||||||
$application->delete();
|
$application->delete();
|
||||||
}
|
}
|
||||||
if (!$application->destination()) {
|
if (!$application->destination()) {
|
||||||
ray('Application without destination', $application->name);
|
echo 'Application without destination' . $application->name . 'deleting\n';
|
||||||
$application->delete();
|
$application->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($application, 'destination.server')) {
|
if (!data_get($application, 'destination.server')) {
|
||||||
ray('Application without server', $application->name);
|
echo 'Application without server' . $application->name . 'deleting\n';
|
||||||
$application->delete();
|
$application->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,15 +120,15 @@ class Init extends Command
|
|||||||
$postgresqls = StandalonePostgresql::all();
|
$postgresqls = StandalonePostgresql::all();
|
||||||
foreach ($postgresqls as $postgresql) {
|
foreach ($postgresqls as $postgresql) {
|
||||||
if (!data_get($postgresql, 'environment')) {
|
if (!data_get($postgresql, 'environment')) {
|
||||||
ray('Postgresql without environment', $postgresql->name);
|
echo 'Postgresql without environment' . $postgresql->name . 'deleting\n';
|
||||||
$postgresql->delete();
|
$postgresql->delete();
|
||||||
}
|
}
|
||||||
if (!$postgresql->destination()) {
|
if (!$postgresql->destination()) {
|
||||||
ray('Postgresql without destination', $postgresql->name);
|
echo 'Postgresql without destination' . $postgresql->name . 'deleting\n';
|
||||||
$postgresql->delete();
|
$postgresql->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($postgresql, 'destination.server')) {
|
if (!data_get($postgresql, 'destination.server')) {
|
||||||
ray('Postgresql without server', $postgresql->name);
|
echo 'Postgresql without server' . $postgresql->name . 'deleting\n';
|
||||||
$postgresql->delete();
|
$postgresql->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,15 +139,15 @@ class Init extends Command
|
|||||||
$redis = StandaloneRedis::all();
|
$redis = StandaloneRedis::all();
|
||||||
foreach ($redis as $redis) {
|
foreach ($redis as $redis) {
|
||||||
if (!data_get($redis, 'environment')) {
|
if (!data_get($redis, 'environment')) {
|
||||||
ray('Redis without environment', $redis->name);
|
echo 'Redis without environment' . $redis->name . 'deleting\n';
|
||||||
$redis->delete();
|
$redis->delete();
|
||||||
}
|
}
|
||||||
if (!$redis->destination()) {
|
if (!$redis->destination()) {
|
||||||
ray('Redis without destination', $redis->name);
|
echo 'Redis without destination' . $redis->name . 'deleting\n';
|
||||||
$redis->delete();
|
$redis->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($redis, 'destination.server')) {
|
if (!data_get($redis, 'destination.server')) {
|
||||||
ray('Redis without server', $redis->name);
|
echo 'Redis without server' . $redis->name . 'deleting\n';
|
||||||
$redis->delete();
|
$redis->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,15 +159,15 @@ class Init extends Command
|
|||||||
$mongodbs = StandaloneMongodb::all();
|
$mongodbs = StandaloneMongodb::all();
|
||||||
foreach ($mongodbs as $mongodb) {
|
foreach ($mongodbs as $mongodb) {
|
||||||
if (!data_get($mongodb, 'environment')) {
|
if (!data_get($mongodb, 'environment')) {
|
||||||
ray('Mongodb without environment', $mongodb->name);
|
echo 'Mongodb without environment' . $mongodb->name . 'deleting\n';
|
||||||
$mongodb->delete();
|
$mongodb->delete();
|
||||||
}
|
}
|
||||||
if (!$mongodb->destination()) {
|
if (!$mongodb->destination()) {
|
||||||
ray('Mongodb without destination', $mongodb->name);
|
echo 'Mongodb without destination' . $mongodb->name . 'deleting\n';
|
||||||
$mongodb->delete();
|
$mongodb->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($mongodb, 'destination.server')) {
|
if (!data_get($mongodb, 'destination.server')) {
|
||||||
ray('Mongodb without server', $mongodb->name);
|
echo 'Mongodb without server' . $mongodb->name . 'deleting\n';
|
||||||
$mongodb->delete();
|
$mongodb->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -179,15 +179,15 @@ class Init extends Command
|
|||||||
$mysqls = StandaloneMysql::all();
|
$mysqls = StandaloneMysql::all();
|
||||||
foreach ($mysqls as $mysql) {
|
foreach ($mysqls as $mysql) {
|
||||||
if (!data_get($mysql, 'environment')) {
|
if (!data_get($mysql, 'environment')) {
|
||||||
ray('Mysql without environment', $mysql->name);
|
echo 'Mysql without environment' . $mysql->name . 'deleting\n';
|
||||||
$mysql->delete();
|
$mysql->delete();
|
||||||
}
|
}
|
||||||
if (!$mysql->destination()) {
|
if (!$mysql->destination()) {
|
||||||
ray('Mysql without destination', $mysql->name);
|
echo 'Mysql without destination' . $mysql->name . 'deleting\n';
|
||||||
$mysql->delete();
|
$mysql->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($mysql, 'destination.server')) {
|
if (!data_get($mysql, 'destination.server')) {
|
||||||
ray('Mysql without server', $mysql->name);
|
echo 'Mysql without server' . $mysql->name . 'deleting\n';
|
||||||
$mysql->delete();
|
$mysql->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -199,15 +199,15 @@ class Init extends Command
|
|||||||
$mariadbs = StandaloneMariadb::all();
|
$mariadbs = StandaloneMariadb::all();
|
||||||
foreach ($mariadbs as $mariadb) {
|
foreach ($mariadbs as $mariadb) {
|
||||||
if (!data_get($mariadb, 'environment')) {
|
if (!data_get($mariadb, 'environment')) {
|
||||||
ray('Mariadb without environment', $mariadb->name);
|
echo 'Mariadb without environment' . $mariadb->name . 'deleting\n';
|
||||||
$mariadb->delete();
|
$mariadb->delete();
|
||||||
}
|
}
|
||||||
if (!$mariadb->destination()) {
|
if (!$mariadb->destination()) {
|
||||||
ray('Mariadb without destination', $mariadb->name);
|
echo 'Mariadb without destination' . $mariadb->name . 'deleting\n';
|
||||||
$mariadb->delete();
|
$mariadb->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($mariadb, 'destination.server')) {
|
if (!data_get($mariadb, 'destination.server')) {
|
||||||
ray('Mariadb without server', $mariadb->name);
|
echo 'Mariadb without server' . $mariadb->name . 'deleting\n';
|
||||||
$mariadb->delete();
|
$mariadb->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -219,15 +219,15 @@ class Init extends Command
|
|||||||
$services = Service::all();
|
$services = Service::all();
|
||||||
foreach ($services as $service) {
|
foreach ($services as $service) {
|
||||||
if (!data_get($service, 'environment')) {
|
if (!data_get($service, 'environment')) {
|
||||||
ray('Service without environment', $service->name);
|
echo 'Service without environment' . $service->name . 'deleting\n';
|
||||||
$service->delete();
|
$service->delete();
|
||||||
}
|
}
|
||||||
if (!$service->destination()) {
|
if (!$service->destination()) {
|
||||||
ray('Service without destination', $service->name);
|
echo 'Service without destination' . $service->name . 'deleting\n';
|
||||||
$service->delete();
|
$service->delete();
|
||||||
}
|
}
|
||||||
if (!data_get($service, 'server')) {
|
if (!data_get($service, 'server')) {
|
||||||
ray('Service without server', $service->name);
|
echo 'Service without server' . $service->name . 'deleting\n';
|
||||||
$service->delete();
|
$service->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,7 +238,7 @@ class Init extends Command
|
|||||||
$serviceApplications = ServiceApplication::all();
|
$serviceApplications = ServiceApplication::all();
|
||||||
foreach ($serviceApplications as $service) {
|
foreach ($serviceApplications as $service) {
|
||||||
if (!data_get($service, 'service')) {
|
if (!data_get($service, 'service')) {
|
||||||
ray('ServiceApplication without service', $service->name);
|
echo 'ServiceApplication without service' . $service->name . 'deleting\n';
|
||||||
$service->delete();
|
$service->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ class Init extends Command
|
|||||||
$serviceDatabases = ServiceDatabase::all();
|
$serviceDatabases = ServiceDatabase::all();
|
||||||
foreach ($serviceDatabases as $service) {
|
foreach ($serviceDatabases as $service) {
|
||||||
if (!data_get($service, 'service')) {
|
if (!data_get($service, 'service')) {
|
||||||
ray('ServiceDatabase without service', $service->name);
|
echo 'ServiceDatabase without service' . $service->name . 'deleting\n';
|
||||||
$service->delete();
|
$service->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,9 @@ class PricingPlans extends Component
|
|||||||
public bool $isTrial = false;
|
public bool $isTrial = false;
|
||||||
public function mount() {
|
public function mount() {
|
||||||
$this->isTrial = !data_get(currentTeam(),'subscription.stripe_trial_already_ended');
|
$this->isTrial = !data_get(currentTeam(),'subscription.stripe_trial_already_ended');
|
||||||
|
if (config('constants.limits.trial_period') == 0) {
|
||||||
|
$this->isTrial = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public function subscribeStripe($type)
|
public function subscribeStripe($type)
|
||||||
{
|
{
|
||||||
@ -63,6 +66,7 @@ class PricingPlans extends Component
|
|||||||
];
|
];
|
||||||
|
|
||||||
if (!data_get($team,'subscription.stripe_trial_already_ended')) {
|
if (!data_get($team,'subscription.stripe_trial_already_ended')) {
|
||||||
|
if (config('constants.limits.trial_period') > 0) {
|
||||||
$payload['subscription_data'] = [
|
$payload['subscription_data'] = [
|
||||||
'trial_period_days' => config('constants.limits.trial_period'),
|
'trial_period_days' => config('constants.limits.trial_period'),
|
||||||
'trial_settings' => [
|
'trial_settings' => [
|
||||||
@ -71,6 +75,7 @@ class PricingPlans extends Component
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
}
|
||||||
$payload['payment_method_collection'] = 'if_required';
|
$payload['payment_method_collection'] = 'if_required';
|
||||||
}
|
}
|
||||||
$customer = currentTeam()->subscription?->stripe_customer_id ?? null;
|
$customer = currentTeam()->subscription?->stripe_customer_id ?? null;
|
||||||
|
@ -47,7 +47,7 @@ class CheckLogDrainContainerJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
if (!$this->server->isServerReady()) {
|
if (!$this->server->isServerReady()) {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
$containers = instant_remote_process(["docker container ls -q"], $this->server);
|
$containers = instant_remote_process(["docker container ls -q"], $this->server, false);
|
||||||
if (!$containers) {
|
if (!$containers) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
$containerReplicase = instant_remote_process(["docker service ls --format '{{json .}}'"], $this->server, false);
|
$containerReplicase = instant_remote_process(["docker service ls --format '{{json .}}'"], $this->server, false);
|
||||||
} else {
|
} else {
|
||||||
// Precheck for containers
|
// Precheck for containers
|
||||||
$containers = instant_remote_process(["docker container ls -q"], $this->server);
|
$containers = instant_remote_process(["docker container ls -q"], $this->server, false);
|
||||||
if (!$containers) {
|
if (!$containers) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -95,7 +95,6 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
$uuid = data_get($labels, 'coolify.name');
|
$uuid = data_get($labels, 'coolify.name');
|
||||||
} else {
|
} else {
|
||||||
$labels = data_get($container, 'Config.Labels');
|
$labels = data_get($container, 'Config.Labels');
|
||||||
$uuid = data_get($labels, 'com.docker.compose.service');
|
|
||||||
}
|
}
|
||||||
$containerStatus = data_get($container, 'State.Status');
|
$containerStatus = data_get($container, 'State.Status');
|
||||||
$containerHealth = data_get($container, 'State.Health.Status', 'unhealthy');
|
$containerHealth = data_get($container, 'State.Health.Status', 'unhealthy');
|
||||||
@ -131,6 +130,7 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
$uuid = data_get($labels, 'com.docker.compose.service');
|
||||||
if ($uuid) {
|
if ($uuid) {
|
||||||
$database = $databases->where('uuid', $uuid)->first();
|
$database = $databases->where('uuid', $uuid)->first();
|
||||||
if ($database) {
|
if ($database) {
|
||||||
|
@ -22,7 +22,7 @@ return [
|
|||||||
'official' => 'https://cdn.coollabs.io/coolify/service-templates.json',
|
'official' => 'https://cdn.coollabs.io/coolify/service-templates.json',
|
||||||
],
|
],
|
||||||
'limits' => [
|
'limits' => [
|
||||||
'trial_period' => 7,
|
'trial_period' => 0,
|
||||||
'server' => [
|
'server' => [
|
||||||
'zero' => 0,
|
'zero' => 0,
|
||||||
'self-hosted' => 999999999999,
|
'self-hosted' => 999999999999,
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
return [
|
return [
|
||||||
|
|
||||||
// @see https://docs.sentry.io/product/sentry-basics/dsn-explainer/
|
// @see https://docs.sentry.io/product/sentry-basics/dsn-explainer/
|
||||||
'dsn' => 'https://396748153b19c469f5ceff50f1664323@o1082494.ingest.sentry.io/4505347448045568',
|
'dsn' => 'https://bea22abf110618b07252032aa2e07859@o1082494.ingest.sentry.io/4505347448045568',
|
||||||
|
|
||||||
// The release version of your application
|
// The release version of your application
|
||||||
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
|
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
|
||||||
'release' => '4.0.0-beta.148',
|
'release' => '4.0.0-beta.149',
|
||||||
// When left empty or `null` the Laravel environment will be used
|
// When left empty or `null` the Laravel environment will be used
|
||||||
'environment' => config('app.env'),
|
'environment' => config('app.env'),
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
return '4.0.0-beta.148';
|
return '4.0.0-beta.149';
|
||||||
|
@ -21,8 +21,11 @@
|
|||||||
</label>
|
</label>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
<div class="py-2 text-center"><span class="font-bold text-warning">{{ config('constants.limits.trial_period') }}
|
@if (config('constants.limits.trial_period') > 0)
|
||||||
days trial</span> included on all plans, without credit card details.</div>
|
<div class="py-2 text-center"><span
|
||||||
|
class="font-bold text-warning">{{ config('constants.limits.trial_period') }}
|
||||||
|
days trial</span> included on all plans, without credit card details.</div>
|
||||||
|
@endif
|
||||||
<div x-show="selected === 'monthly'" class="flex justify-center h-10 mt-3 text-sm leading-6 ">
|
<div x-show="selected === 'monthly'" class="flex justify-center h-10 mt-3 text-sm leading-6 ">
|
||||||
<div>Save <span class="font-bold text-warning">10%</span> annually with the yearly plans.
|
<div>Save <span class="font-bold text-warning">10%</span> annually with the yearly plans.
|
||||||
</div>
|
</div>
|
||||||
@ -255,8 +258,8 @@
|
|||||||
<div class="flex items-start gap-4 text-xl tracking-tight">Need official support for
|
<div class="flex items-start gap-4 text-xl tracking-tight">Need official support for
|
||||||
your self-hosted instance?
|
your self-hosted instance?
|
||||||
<x-forms.button>
|
<x-forms.button>
|
||||||
<a class="font-bold text-white hover:no-underline"
|
<a class="font-bold text-white hover:no-underline" href="{{ config('coolify.docs') }}">Contact
|
||||||
href="{{ config('coolify.docs') }}">Contact Us</a>
|
Us</a>
|
||||||
</x-forms.button>
|
</x-forms.button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"version": "3.12.36"
|
"version": "3.12.36"
|
||||||
},
|
},
|
||||||
"v4": {
|
"v4": {
|
||||||
"version": "4.0.0-beta.148"
|
"version": "4.0.0-beta.149"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user