Um erro comum de versionamento é manter configurações de ambiente fixas nos arquivos de código. Isso causa falhas catastróficas ao mover o sistema entre o Docker (localhost) e a HostGator.
Transformamos o wp-config.php em um arquivo de configuração inteligente e agnóstico, utilizando variáveis de ambiente. O código tenta resgatar as credenciais geradas pelo Docker; se falhar (indicando que está em produção), ele assume as credenciais oficiais.
// Conexão Dinâmica de Banco de Dados
define( 'DB_NAME', getenv('WORDPRESS_DB_NAME') ?: 'banco_producao' );
define( 'DB_USER', getenv('WORDPRESS_DB_USER') ?: 'user_producao' );
define( 'DB_PASSWORD', getenv('WORDPRESS_DB_PASSWORD') ?: 'senha_producao' );
define( 'DB_HOST', getenv('WORDPRESS_DB_HOST') ?: 'localhost' );
// Resolução Dinâmica de URLs
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://';
$current_host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'tiweb.app.br';
define('WP_HOME', $protocol . $current_host);
define('WP_SITEURL', $protocol . $current_host);
Por fim, embora o wp-config.php resolva o acesso estrutural, o conteúdo persistido no banco de dados (links internos, caminhos de imagens) ainda carrega o domínio de produção. Efetuar um “Find & Replace” manual no SQL quebra os dados serializados do PHP.
A solução profissional é acionar o WP-CLI diretamente dentro do container para reescrever as URLs do banco, mantendo a integridade da serialização. E para lidar com construtores de página modernos que escapam barras em formatos JSON, rodamos o comando considerando as barras invertidas:
# Baixando e executando o WP-CLI no container em tempo real
docker exec -it site_tiweb sh -c "curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x wp-cli.phar && php wp-cli.phar search-replace 'https:\/\/tiweb.app.br' 'http:\/\/localhost:8080' --allow-root"
Com o banco sanitizado, cache limpo e CSS reconstruído, o ambiente local no Docker torna-se a base de lançamento perfeita e segura para a integração final com a API em Angular.

Deixe um comentário