Este projeto fornece uma imagem Docker para automação de deploys e operações via SSH, utilizando o usuário seguro www-data.
- Base PHP 8.4 CLI
- Instalação de ferramentas essenciais: git, unzip, zip, less, mariadb-client, rsync, curl, openssh-server
- Composer e WP-CLI prontos para uso
- Diretórios
.sshe.cacheconfigurados para o usuáriowww-data - Configuração customizada do SSH
- HEALTHCHECK para monitoramento do container
- Exemplo de entrypoint adaptável
- O container executa como
www-data(não root) - Diretórios sensíveis possuem permissões restritas
- Recomenda-se configurar o arquivo
sshd_configcom:PermitRootLogin no PasswordAuthentication no AllowUsers www-data - Utilize autenticação por chave SSH
O projeto usa um arquivo .env para configurações:
# Editar configurações conforme necessário
vim .envConfigurações disponíveis:
SSH_PORT: Porta externa do SSH (padrão: 2232)CONTAINER_NAME: Nome do container (padrão: ee-deployer-runner)IMAGE_NAME: Nome da imagem (padrão: ee-deployer-runner:latest)
-
Crie e configure a pasta .ssh:
mkdir -p .ssh cp ~/.ssh/id_ed25519 .ssh/ # Chave privada cp ~/.ssh/id_ed25519.pub .ssh/ # Chave pública cp ~/.ssh/authorized_keys .ssh/ # Chaves autorizadas cp ~/.ssh/known_hosts .ssh/ # Hosts conhecidos (opcional)
-
Build e execução:
docker-compose build docker-compose up -d
# Usando a porta padrão (2232)
ssh -p 2232 www-data@localhostOs arquivos SSH serão copiados durante o build com permissões corretas:
- Chaves privadas: 600
- Chaves públicas (.pub): 644
- Diretório .ssh: 700
O projeto inclui um script manage-files.sh para facilitar operações comuns:
# Tornar executável (primeira vez)
chmod +x manage-files.sh
# Copiar apenas authorized_keys para container em execução
./manage-files.sh copy-authorized-keys
# Copiar pasta .ssh completa para container em execução
./manage-files.sh copy-ssh-folder
# Acessar shell do container
./manage-files.sh shell
# Ver logs do container
./manage-files.sh logs
# Ver ajuda
./manage-files.sh help.
├── docker-compose.yml
├── Dockerfile
├── .dockerignore # Arquivos excluídos do build context
├── .env # Configurações do projeto
├── .ssh/ # Pasta com arquivos SSH
│ ├── authorized_keys # Chaves públicas autorizadas
│ ├── id_rsa # Chave privada (opcional)
│ ├── id_rsa.pub # Chave pública (opcional)
│ └── known_hosts # Hosts conhecidos (opcional)
├── manage-files.sh # Script para gerenciar o container
└── files/
├── entrypoint.sh
└── sshd_config
Importante:
- O arquivo
.envnão está no.gitignorepois contém apenas configurações básicas - Adicione informações sensíveis ao
.gitignorese necessário
- Sugestões e PRs são bem-vindos
Consulte o arquivo LICENSE para detalhes.