improve coolify-helper + add test new functionalities
This commit is contained in:
		@@ -25,6 +25,15 @@ class Dashboard extends Component
 | 
			
		||||
        }
 | 
			
		||||
        $this->projects = $projects->count();
 | 
			
		||||
    }
 | 
			
		||||
    // public function getIptables()
 | 
			
		||||
    // {
 | 
			
		||||
    //     $servers = Server::ownedByCurrentTeam()->get();
 | 
			
		||||
    //     foreach ($servers as $server) {
 | 
			
		||||
    //         checkRequiredCommands($server);
 | 
			
		||||
    //         $iptables = instant_remote_process(['docker run --privileged --net=host --pid=host --ipc=host --volume /:/host busybox chroot /host bash -c "iptables -L -n | jc --iptables"'], $server);
 | 
			
		||||
    //         ray($iptables);
 | 
			
		||||
    //     }
 | 
			
		||||
    // }
 | 
			
		||||
    public function render()
 | 
			
		||||
    {
 | 
			
		||||
        return view('livewire.dashboard');
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,7 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
    private $log_model;
 | 
			
		||||
    private Collection $saved_outputs;
 | 
			
		||||
 | 
			
		||||
    public $tries = 1;
 | 
			
		||||
    public function middleware(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -242,7 +243,7 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
    }
 | 
			
		||||
    private function health_check()
 | 
			
		||||
    {
 | 
			
		||||
        ray('New container name: ',$this->container_name);
 | 
			
		||||
        ray('New container name: ', $this->container_name);
 | 
			
		||||
        if ($this->container_name) {
 | 
			
		||||
            $counter = 0;
 | 
			
		||||
            $this->execute_remote_command(
 | 
			
		||||
@@ -264,7 +265,7 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
                );
 | 
			
		||||
                $this->execute_remote_command(
 | 
			
		||||
                    [
 | 
			
		||||
                        "echo 'New application version health check status: {$this->saved_outputs->get('health_check')}'"
 | 
			
		||||
                        "echo 'New version health check status: {$this->saved_outputs->get('health_check')}'"
 | 
			
		||||
                    ],
 | 
			
		||||
                );
 | 
			
		||||
                if (Str::of($this->saved_outputs->get('health_check'))->contains('healthy')) {
 | 
			
		||||
@@ -272,6 +273,7 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
                        [
 | 
			
		||||
                            "echo 'Rolling update completed.'"
 | 
			
		||||
                        ],
 | 
			
		||||
                        ["echo -n '######################'"],
 | 
			
		||||
                    );
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
@@ -304,17 +306,24 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
 | 
			
		||||
    private function prepare_builder_image()
 | 
			
		||||
    {
 | 
			
		||||
        $pull = "--pull=always";
 | 
			
		||||
        if (isDev()) {
 | 
			
		||||
            $pull = "--pull=never";
 | 
			
		||||
        }
 | 
			
		||||
        $runCommand = "docker run --init {$pull} -d --network {$this->destination->network} -v /:/host  --name {$this->deployment_uuid} --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/coollabsio/coolify-helper";
 | 
			
		||||
 | 
			
		||||
        $this->execute_remote_command(
 | 
			
		||||
            [
 | 
			
		||||
                "echo -n 'Pulling latest version of the helper image (ghcr.io/coollabsio/coolify-helper).'",
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                "docker run --pull=always -d --network {$this->destination->network} --name {$this->deployment_uuid} --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/coollabsio/coolify-helper",
 | 
			
		||||
                $runCommand,
 | 
			
		||||
                "hidden" => true,
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                "command" => $this->execute_in_builder("mkdir -p {$this->workdir}")
 | 
			
		||||
            ],
 | 
			
		||||
            ["echo -n '######################'"],
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -654,7 +663,7 @@ class ApplicationDeploymentJob implements ShouldQueue
 | 
			
		||||
    private function build_image()
 | 
			
		||||
    {
 | 
			
		||||
        $this->execute_remote_command([
 | 
			
		||||
            "echo -n 'Building docker image.'",
 | 
			
		||||
            "echo -n 'Building docker image for your application.'",
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
        if ($this->application->settings->is_static) {
 | 
			
		||||
@@ -715,6 +724,7 @@ COPY ./nginx.conf /etc/nginx/conf.d/default.conf");
 | 
			
		||||
    private function start_by_compose_file()
 | 
			
		||||
    {
 | 
			
		||||
        $this->execute_remote_command(
 | 
			
		||||
            ["echo -n '######################'"],
 | 
			
		||||
            ["echo -n 'Rolling update started.'"],
 | 
			
		||||
            [$this->execute_in_builder("docker compose --project-directory {$this->workdir} up -d >/dev/null"), "hidden" => true],
 | 
			
		||||
        );
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,7 @@ function generate_ssh_command(string $private_key_location, string $server_ip, s
 | 
			
		||||
    if ($isMux && config('coolify.mux_enabled')) {
 | 
			
		||||
        $ssh_command .= '-o ControlMaster=auto -o ControlPersist=1m -o ControlPath=/var/www/html/storage/app/ssh/mux/%h_%p_%r ';
 | 
			
		||||
    }
 | 
			
		||||
    $command = "PATH=\$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/host/usr/local/sbin:/host/usr/local/bin:/host/usr/sbin:/host/usr/bin:/host/sbin:/host/bin && $command";
 | 
			
		||||
    $ssh_command .= "-i {$private_key_location} "
 | 
			
		||||
        . '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null '
 | 
			
		||||
        . '-o PasswordAuthentication=no '
 | 
			
		||||
@@ -216,3 +217,29 @@ function check_server_connection(Server $server)
 | 
			
		||||
        $server->save();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function checkRequiredCommands(Server $server)
 | 
			
		||||
{
 | 
			
		||||
    $commands = collect(["jq", "jc"]);
 | 
			
		||||
    foreach ($commands as $command) {
 | 
			
		||||
        $commandFound = instant_remote_process(["docker run --rm --privileged --net=host --pid=host --ipc=host --volume /:/host busybox chroot /host bash -c 'command -v {$command}'"], $server, false);
 | 
			
		||||
        if ($commandFound) {
 | 
			
		||||
            ray($command . ' found');
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
            instant_remote_process(["docker run --rm --privileged --net=host --pid=host --ipc=host --volume /:/host busybox chroot /host bash -c 'apt update && apt install -y {$command}'"], $server);
 | 
			
		||||
        } catch (\Exception $e) {
 | 
			
		||||
            ray('could not install ' . $command);
 | 
			
		||||
            ray($e);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        $commandFound = instant_remote_process(["docker run --rm --privileged --net=host --pid=host --ipc=host --volume /:/host busybox chroot /host bash -c 'command -v {$command}'"], $server, false);
 | 
			
		||||
        if ($commandFound) {
 | 
			
		||||
            ray($command . ' found');
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        ray('could not install ' . $command);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ x-testing-host: &testing-host-base
 | 
			
		||||
    context: ./docker/testing-host
 | 
			
		||||
  networks:
 | 
			
		||||
    - coolify
 | 
			
		||||
  init: true
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  coolify:
 | 
			
		||||
@@ -53,6 +54,7 @@ services:
 | 
			
		||||
    <<: *testing-host-base
 | 
			
		||||
    container_name: coolify-testing-host
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /:/host
 | 
			
		||||
      - /var/run/docker.sock:/var/run/docker.sock
 | 
			
		||||
      - /data/coolify/:/data/coolify
 | 
			
		||||
  mailpit:
 | 
			
		||||
 
 | 
			
		||||
@@ -2,19 +2,19 @@ FROM alpine:3.17
 | 
			
		||||
 | 
			
		||||
ARG TARGETPLATFORM
 | 
			
		||||
# https://download.docker.com/linux/static/stable/
 | 
			
		||||
ARG DOCKER_VERSION=23.0.6
 | 
			
		||||
ARG DOCKER_VERSION=24.0.5
 | 
			
		||||
# https://github.com/docker/compose/releases
 | 
			
		||||
ARG DOCKER_COMPOSE_VERSION=2.18.1
 | 
			
		||||
ARG DOCKER_COMPOSE_VERSION=2.21.0
 | 
			
		||||
# https://github.com/docker/buildx/releases
 | 
			
		||||
ARG DOCKER_BUILDX_VERSION=0.10.5
 | 
			
		||||
ARG DOCKER_BUILDX_VERSION=0.11.2
 | 
			
		||||
# https://github.com/buildpacks/pack/releases
 | 
			
		||||
ARG PACK_VERSION=0.29.0
 | 
			
		||||
ARG PACK_VERSION=0.30.0
 | 
			
		||||
# https://github.com/railwayapp/nixpacks/releases
 | 
			
		||||
ARG NIXPACKS_VERSION=1.12.0
 | 
			
		||||
ARG NIXPACKS_VERSION=1.13.0
 | 
			
		||||
 | 
			
		||||
USER root
 | 
			
		||||
WORKDIR /artifacts
 | 
			
		||||
RUN apk add --no-cache bash curl git git-lfs openssh-client tar tini
 | 
			
		||||
RUN apk add --no-cache bash curl git git-lfs openssh-client tar
 | 
			
		||||
RUN mkdir -p ~/.docker/cli-plugins
 | 
			
		||||
RUN if [[ ${TARGETPLATFORM} == 'linux/amd64' ]]; then \
 | 
			
		||||
    curl -sSL https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx && \
 | 
			
		||||
@@ -37,6 +37,4 @@ RUN if [[ ${TARGETPLATFORM} == 'linux/arm64' ]]; then \
 | 
			
		||||
COPY --from=minio/mc /usr/bin/mc /usr/bin/mc
 | 
			
		||||
RUN chmod +x /usr/bin/mc
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT ["/sbin/tini", "--"]
 | 
			
		||||
CMD ["sh", "-c", "while true; do sleep 1; done"]
 | 
			
		||||
 | 
			
		||||
CMD ["tail", "-f", "/dev/null"]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,29 +1,11 @@
 | 
			
		||||
FROM alpine:3.17
 | 
			
		||||
 | 
			
		||||
ARG TARGETPLATFORM
 | 
			
		||||
# https://download.docker.com/linux/static/stable/
 | 
			
		||||
ARG DOCKER_VERSION=23.0.6
 | 
			
		||||
# https://github.com/docker/compose/releases
 | 
			
		||||
ARG DOCKER_COMPOSE_VERSION=2.18.1
 | 
			
		||||
# https://github.com/docker/buildx/releases
 | 
			
		||||
ARG DOCKER_BUILDX_VERSION=0.10.5
 | 
			
		||||
# https://github.com/buildpacks/pack/releases
 | 
			
		||||
ARG PACK_VERSION=0.29.0
 | 
			
		||||
# https://github.com/railwayapp/nixpacks/releases
 | 
			
		||||
ARG NIXPACKS_VERSION=1.12.0
 | 
			
		||||
FROM debian:12-slim
 | 
			
		||||
 | 
			
		||||
USER root
 | 
			
		||||
WORKDIR /root
 | 
			
		||||
RUN apk add --no-cache bash curl git git-lfs openssh-client openssh-server tar tini postgresql-client lsof
 | 
			
		||||
RUN mkdir -p ~/.docker/cli-plugins
 | 
			
		||||
RUN if [[ ${TARGETPLATFORM} == 'linux/amd64' ]]; then \
 | 
			
		||||
    curl -sSL https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx && \
 | 
			
		||||
    curl -sSL https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose && \
 | 
			
		||||
    (curl -sSL https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz | tar -C /usr/bin/ --no-same-owner -xzv --strip-components=1 docker/docker) && \
 | 
			
		||||
    (curl -sSL https://github.com/buildpacks/pack/releases/download/v${PACK_VERSION}/pack-v${PACK_VERSION}-linux.tgz | tar -C /usr/local/bin/ --no-same-owner -xzv pack) && \
 | 
			
		||||
    curl -sSL https://nixpacks.com/install.sh | bash && \
 | 
			
		||||
    chmod +x ~/.docker/cli-plugins/docker-compose /usr/bin/docker /usr/local/bin/pack /root/.docker/cli-plugins/docker-buildx \
 | 
			
		||||
    ;fi
 | 
			
		||||
ENV PATH "$PATH:/host/usr/local/sbin:/host/usr/local/bin:/host/usr/sbin:/host/usr/bin:/host/sbin:/host/bin"
 | 
			
		||||
 | 
			
		||||
RUN apt update && apt -y install openssh-client openssh-server curl wget git jq jc
 | 
			
		||||
 | 
			
		||||
# Setup sshd
 | 
			
		||||
RUN ssh-keygen -A
 | 
			
		||||
@@ -32,6 +14,4 @@ RUN mkdir -p ~/.ssh
 | 
			
		||||
RUN echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFuGmoeGq/pojrsyP1pszcNVuZx9iFkCELtxrh31QJ68 coolify@coolify-instance" >> ~/.ssh/authorized_keys
 | 
			
		||||
 | 
			
		||||
EXPOSE 22
 | 
			
		||||
ENTRYPOINT ["/sbin/tini", "--"]
 | 
			
		||||
CMD ["/usr/sbin/sshd", "-D", "-o", "ListenAddress=0.0.0.0"]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,5 +35,5 @@
 | 
			
		||||
            <div class="stat-value">{{ $s3s }}</div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{-- <x-forms.button wire:click='getIptables'>Get IPTABLES</x-forms.button> --}}
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ echo -e "-------------"
 | 
			
		||||
echo "Installing required packages..."
 | 
			
		||||
 | 
			
		||||
apt update -y >/dev/null 2>&1
 | 
			
		||||
apt install -y curl wget git jq >/dev/null 2>&1
 | 
			
		||||
apt install -y curl wget git jq jc >/dev/null 2>&1
 | 
			
		||||
 | 
			
		||||
if ! [ -x "$(command -v docker)" ]; then
 | 
			
		||||
    echo "Docker is not installed. Installing Docker..."
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user