Pacote para gerar containers rápidos

Installs: 70

Dependents: 0

Suggesters: 0

Security: 0

Stars: 7

Watchers: 1

Forks: 4

Open Issues: 0

Language:Shell

v3.2.0 2025-04-12 18:23 UTC

This package is auto-updated.

Last update: 2025-04-12 18:40:47 UTC


README

Requisitos obrigatórios:

  • Docker

Instalando Scoob globalmente:

cd ~/ && git clone https://github.com/Shieldforce/scoob.git && cd scoob

Crie esse alias no seu ~/.bashrc ou ~/.zshrc e rode os source ~/.bashrc ou ~/.zshrc

alias scoob='bash $HOME/scoob/scoob'

Criando alias para rodar o scoob em qualquer projeto:

echo "alias scoob='bash $HOME/scoob/scoob'" >> ~/.zshrc; source ~/.zshrc

Rodando composer install e ignorando qualquer conflito de versão!:

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html composer/composer \
     composer install --ignore-platform-reqs

Instalando Scoob localmente:

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html composer/composer \
     composer require shieldforce/scoob

Comando para rodar local:

bash ./vendor/shieldforce/scoob/scoob {comandos scoob}

Exemplo (Vai criar um container com php8.3 na porta 9000):

bash ./vendor/shieldforce/scoob/scoob --type docker-php-nginx --version 8.3 --port 9000

Rede que o scoob é criado scoob-network

Use scoob ou 'bash ./vendor/shieldforce/scoob/scoob' vai depender de como vc instalou!:

Com o scoob instalado global ou localmente vc pode usar o composer dele:

bash ./vendor/shieldforce/scoob/scoob --composer 'composer update' {container-name}

Tipos de implementação:

Remover totalmente um container:

scoob --type docker-remove {container-name}

Implementar um container PHP Puro:

scoob --type docker-php-nginx {parametros obrigatórios}

Implementar um container Laravel:

scoob --type docker-laravel {parametros obrigatórios}

Limpar tudo que não está sendo usado no docker (CUIDADO, IRÁ EXCLUIR TUDO QUE NÃO ESTÁ SENDO USADO!):

scoob --docker-prune

Roda um servidor mysql na rede scoob-network (se rodar: scoob --mysql-ext ele roda com os parâmetros defaults):

Dados Default:

  • port: 3399
  • user: scoob_user
  • pass: scoob_pass
  • db: scoob_db
  • container: scoob-mysql
scoob --mysql-ext=true \
    --port='port_number' \
    --user='user_name' \
    --pass='password' \
    --db='db_name' \
    --container='container-name'

Exemplos de container para php/nginx e laravel:

  • --type (obrigatório) : Tipo do container para php sempre será (docker-php-nginx)
  • --version (obrigatório) : Versão do PHP Versões disponíveis (7.3, 7.4, 8.1, 8.2, 8.3,84)
  • --port (obrigatório) : Porta de Exposição do container
  • --redis-port (opcional) : Seta porta do redis!
  • --mysql-port (opcional) : Seta porta do mysql!

Este comando vai instalar um container com php/nginx.

scoob --type docker-php-nginx --version 8.4 --port 8084

Listar containers Exemplo: --type + --port [php-fpm-8.4-8084] :

docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                                                       NAMES
f6d5sf6f56f5   php-fpm-8.4-8084   "docker-php-entrypoi…"   1 minutes ago   Up 1 minutes   8073/tcp, 9000/tcp, 0.0.0.0:8084->80/tcp, :::8084->80/tcp   php-fpm-8.4-8084

Este comando vai instalar um container com laravel/mysql/redis/supervisor.

scoob --type docker-laravel --version 8.4 --port 8094 --redis-port 6394 --mysql-port 3394

Supervisor (No caso de containers: --type docker-laravel)

Acessar bash do container:

docker exec -it {container-name} bash

Listar serviços pendurados no supervisor:

docker exec -it {container-name} supervisorctl status

A saída tem que ser parecdia com isso:
horizon                          RUNNING   pid 61, uptime 0:00:44
mariadb                          RUNNING   pid 62, uptime 0:00:44
nginx                            RUNNING   pid 63, uptime 0:00:44
php-fpm                          RUNNING   pid 64, uptime 0:00:44
redis                            RUNNING   pid 65, uptime 0:00:44

Resetar serviços pendurados no supervisor:

docker exec -it {container-name} supervisorctl restart all

Cada serviço está explicado a baixo caso falhar!

Acessar redis do container:

Se não passou porta, ela será no caso de

  • php7.3: 6373
  • php7.4: 6374
  • php8.1: 6381
  • php8.2: 6382
  • php8.3: 6383
  • php8.4: 6384 Se passou --redis-port será o valor passado:
docker exec -it {container-name} redis-cli -p {port}

Env Redis:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT={porta_configurada}

Se precisar colocar senha no redis só passar o parâmetro no arquivo de configuração do redis:

/etc/redis/redis.conf

requirepass myStrongPassword123!

Acessar mysql do container:

Se não passou porta, ela será no caso de

  • php7.3: 3373
  • php7.4: 3374
  • php8.1: 3381
  • php8.2: 3382
  • php8.3: 3383
  • php8.4: 3384 Se passou --mysql-port será o valor passado:
docker exec -it {container-name} mysql
MariaDB [(none)]> create database {db_name};
O resultado tem que ser: (Query OK, 1 row affected (0.000 sec))

Acesso root:

docker exec -it {container-name} mysql
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '{senha_desejada}' WITH GRANT OPTION;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.%.%.%' IDENTIFIED BY 'senha_desejada' WITH GRANT OPTION;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'0.0.0.0' IDENTIFIED BY 'senha_desejada' WITH GRANT OPTION;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'senha_desejada' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

Env Mysql:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT={porta que configurou}
DB_DATABASE={db_name}
DB_USERNAME=root
DB_PASSWORD={senha_desejada}

Rodar Migrate (Se pedir para criar banco cujo o nome está na variável DB_DATABASE, aceite):

docker exec -it {container-name} php artisan migrate

Rodar Horizon (Se não estiver instalado rode o primeiro comando):

docker exec -it {container-name} composer require laravel/horizon
docker exec -it {container-name} php artisan horizon:install