Custom network aliases for Dockerfile and Docker Image apps
This commit is contained in:
		@@ -1712,9 +1712,10 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
 | 
				
			|||||||
                    'expose' => $ports,
 | 
					                    'expose' => $ports,
 | 
				
			||||||
                    'networks' => [
 | 
					                    'networks' => [
 | 
				
			||||||
                        $this->destination->network => [
 | 
					                        $this->destination->network => [
 | 
				
			||||||
                            'aliases' => [
 | 
					                            'aliases' => array_merge(
 | 
				
			||||||
                                $this->container_name,
 | 
					                                [$this->container_name],
 | 
				
			||||||
                            ],
 | 
					                                $this->application->network_aliases ? explode(',', $this->application->network_aliases) : []
 | 
				
			||||||
 | 
					                            ),
 | 
				
			||||||
                        ],
 | 
					                        ],
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
                    'mem_limit' => $this->application->limits_memory,
 | 
					                    'mem_limit' => $this->application->limits_memory,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,6 +68,7 @@ class General extends Component
 | 
				
			|||||||
        'application.publish_directory' => 'nullable',
 | 
					        'application.publish_directory' => 'nullable',
 | 
				
			||||||
        'application.ports_exposes' => 'required',
 | 
					        'application.ports_exposes' => 'required',
 | 
				
			||||||
        'application.ports_mappings' => 'nullable',
 | 
					        'application.ports_mappings' => 'nullable',
 | 
				
			||||||
 | 
					        'application.network_aliases' => 'nullable',
 | 
				
			||||||
        'application.dockerfile' => 'nullable',
 | 
					        'application.dockerfile' => 'nullable',
 | 
				
			||||||
        'application.docker_registry_image_name' => 'nullable',
 | 
					        'application.docker_registry_image_name' => 'nullable',
 | 
				
			||||||
        'application.docker_registry_image_tag' => 'nullable',
 | 
					        'application.docker_registry_image_tag' => 'nullable',
 | 
				
			||||||
@@ -120,6 +121,7 @@ class General extends Component
 | 
				
			|||||||
        'application.custom_labels' => 'Custom labels',
 | 
					        'application.custom_labels' => 'Custom labels',
 | 
				
			||||||
        'application.dockerfile_target_build' => 'Dockerfile target build',
 | 
					        'application.dockerfile_target_build' => 'Dockerfile target build',
 | 
				
			||||||
        'application.custom_docker_run_options' => 'Custom docker run commands',
 | 
					        'application.custom_docker_run_options' => 'Custom docker run commands',
 | 
				
			||||||
 | 
					        'application.custom_network_aliases' => 'Custom docker network aliases',
 | 
				
			||||||
        'application.docker_compose_custom_start_command' => 'Docker compose custom start command',
 | 
					        'application.docker_compose_custom_start_command' => 'Docker compose custom start command',
 | 
				
			||||||
        'application.docker_compose_custom_build_command' => 'Docker compose custom build command',
 | 
					        'application.docker_compose_custom_build_command' => 'Docker compose custom build command',
 | 
				
			||||||
        'application.custom_nginx_configuration' => 'Custom Nginx configuration',
 | 
					        'application.custom_nginx_configuration' => 'Custom Nginx configuration',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,7 @@ use Visus\Cuid2\Cuid2;
 | 
				
			|||||||
        'start_command' => ['type' => 'string', 'description' => 'Start command.'],
 | 
					        'start_command' => ['type' => 'string', 'description' => 'Start command.'],
 | 
				
			||||||
        'ports_exposes' => ['type' => 'string', 'description' => 'Ports exposes.'],
 | 
					        'ports_exposes' => ['type' => 'string', 'description' => 'Ports exposes.'],
 | 
				
			||||||
        'ports_mappings' => ['type' => 'string', 'nullable' => true, 'description' => 'Ports mappings.'],
 | 
					        'ports_mappings' => ['type' => 'string', 'nullable' => true, 'description' => 'Ports mappings.'],
 | 
				
			||||||
 | 
					        'network_aliases' => ['type' => 'string', 'nullable' => true, 'description' => 'Network aliases for Docker container.'],
 | 
				
			||||||
        'base_directory' => ['type' => 'string', 'description' => 'Base directory for all commands.'],
 | 
					        'base_directory' => ['type' => 'string', 'description' => 'Base directory for all commands.'],
 | 
				
			||||||
        'publish_directory' => ['type' => 'string', 'description' => 'Publish directory.'],
 | 
					        'publish_directory' => ['type' => 'string', 'description' => 'Publish directory.'],
 | 
				
			||||||
        'health_check_enabled' => ['type' => 'boolean', 'description' => 'Health check enabled.'],
 | 
					        'health_check_enabled' => ['type' => 'boolean', 'description' => 'Health check enabled.'],
 | 
				
			||||||
@@ -113,6 +114,8 @@ class Application extends BaseModel
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    protected $appends = ['server_status'];
 | 
					    protected $appends = ['server_status'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected $casts = ['network_aliases' => 'array'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected static function booted()
 | 
					    protected static function booted()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        static::addGlobalScope('withRelations', function ($builder) {
 | 
					        static::addGlobalScope('withRelations', function ($builder) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Database\Migrations\Migration;
 | 
				
			||||||
 | 
					use Illuminate\Database\Schema\Blueprint;
 | 
				
			||||||
 | 
					use Illuminate\Support\Facades\Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return new class extends Migration
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function up()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Schema::table('applications', function (Blueprint $table) {
 | 
				
			||||||
 | 
					            $table->text('network_aliases')->nullable();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function down()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Schema::table('applications', function (Blueprint $table) {
 | 
				
			||||||
 | 
					            $table->dropColumn('network_aliases');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -307,6 +307,11 @@
 | 
				
			|||||||
                        <x-forms.input placeholder="3000:3000" id="application.ports_mappings" label="Ports Mappings"
 | 
					                        <x-forms.input placeholder="3000:3000" id="application.ports_mappings" label="Ports Mappings"
 | 
				
			||||||
                            helper="A comma separated list of ports you would like to map to the host system. Useful when you do not want to use domains.<br><br><span class='inline-block font-bold dark:text-warning'>Example:</span><br>3000:3000,3002:3002<br><br>Rolling update is not supported if you have a port mapped to the host." />
 | 
					                            helper="A comma separated list of ports you would like to map to the host system. Useful when you do not want to use domains.<br><br><span class='inline-block font-bold dark:text-warning'>Example:</span><br>3000:3000,3002:3002<br><br>Rolling update is not supported if you have a port mapped to the host." />
 | 
				
			||||||
                    @endif
 | 
					                    @endif
 | 
				
			||||||
 | 
					                    @if ($application->build_pack === 'dockerfile' || $application->build_pack === 'dockerimage')
 | 
				
			||||||
 | 
					                        <x-forms.input id="application.network_aliases" label="Network Aliases"
 | 
				
			||||||
 | 
					                            helper="A comma separated list of custom network aliases you would like to add for container in Docker network.<br><br><span class='inline-block font-bold dark:text-warning'>Example:</span><br>api.internal,api.local"
 | 
				
			||||||
 | 
					                            wire:model="application.network_aliases" />
 | 
				
			||||||
 | 
					                    @endif
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <x-forms.textarea label="Container Labels" rows="15" id="customLabels"
 | 
					                <x-forms.textarea label="Container Labels" rows="15" id="customLabels"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user