-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-entrypoint.sh
176 lines (146 loc) · 4.21 KB
/
docker-entrypoint.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/bash
###########################################
# Sintoniza Docker Entrypoint
#
# Este script inicializa o container do Sintoniza:
# - Valida e configura variáveis de ambiente
# - Configura SMTP e outras configurações opcionais
# - Inicia serviços (Cron, PHP-FPM e Nginx)
###########################################
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Função para logs de sucesso
log_success() {
echo -e "${GREEN}[✓] $1${NC}"
}
# Função para logs de erro
log_error() {
echo -e "${RED}[✗] $1${NC}" | tee -a /dev/stderr
exit 1
}
# Função para logs de informação
log_info() {
echo -e "${YELLOW}[i] $1${NC}"
}
echo -e "\n${YELLOW}=== Iniciando Container Sintoniza ===${NC}\n"
# === Validação de Variáveis de Ambiente ===
log_info "Validando variáveis de ambiente..."
check_env_var() {
var_name=$1
if [ -z "${!var_name}" ]; then
log_error "A variável de ambiente $var_name não está definida ou está vazia."
fi
}
REQUIRED_ENV_VARS=(
"DB_HOST"
"DB_USERNAME"
"DB_PASSWORD"
"DB_NAME"
"ADMIN_PASSWORD"
"SITE_URL"
"SITE_NAME"
)
for var in "${REQUIRED_ENV_VARS[@]}"; do
check_env_var "$var"
done
log_success "Todas as variáveis de ambiente obrigatórias estão definidas"
# === Configuração de Variáveis de Ambiente ===
log_info "Configurando arquivo de variáveis de ambiente..."
# Variáveis obrigatórias
echo "DB_HOST=${DB_HOST}" >> /app/.env
echo "DB_USERNAME=${DB_USERNAME}" >> /app/.env
echo "DB_PASSWORD=${DB_PASSWORD}" >> /app/.env
echo "DB_NAME=${DB_NAME}" >> /app/.env
echo "SITE_URL=${SITE_URL}" >> /app/.env
echo "SITE_NAME=${SITE_NAME}" >> /app/.env
echo "ADMIN_PASSWORD=${ADMIN_PASSWORD}" >> /app/.env
log_success "Variáveis de ambiente configuradas"
# === Configuração de Logs ===
log_info "Configurando sistema de logs..."
# Ensure log directories exist with proper permissions
mkdir -p /var/log/nginx
mkdir -p /var/log/php-fpm
chown -R www-data:www-data /var/log/nginx /var/log/php-fpm
# Configure logrotate for nginx
cat > /etc/logrotate.d/nginx << EOF
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 \`cat /var/run/nginx.pid\`
endscript
}
EOF
# Configure logrotate for PHP-FPM
cat > /etc/logrotate.d/php-fpm << EOF
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ ! -f /var/run/php-fpm.pid ] || kill -USR1 \`cat /var/run/php-fpm.pid\`
endscript
}
EOF
log_success "Sistema de logs configurado"
# === Inicialização dos Serviços ===
echo -e "\n${YELLOW}=== Iniciando serviços ===${NC}\n"
# Iniciando Cron com redirecionamento de logs
log_info "Iniciando serviço Cron..."
service cron restart 2>&1 | logger -t cron
log_success "Serviço Cron iniciado"
# Funções de verificação de serviços
check_nginx() {
if ! pgrep nginx > /dev/null; then
log_error "Falha ao iniciar Nginx"
else
log_success "Nginx iniciado com sucesso"
fi
}
check_php_fpm() {
if ! pgrep php-fpm > /dev/null; then
log_error "Falha ao iniciar PHP-FPM"
else
log_success "PHP-FPM iniciado com sucesso"
fi
}
# Diretório PHP-FPM
if [ ! -d /var/run/php ]; then
log_info "Criando diretório PHP-FPM..."
mkdir -p /var/run/php
chown -R www-data:www-data /var/run/php
log_success "Diretório PHP-FPM criado"
fi
# Iniciando PHP-FPM com redirecionamento de logs
log_info "Iniciando PHP-FPM..."
php-fpm --allow-to-run-as-root 2>&1 | logger -t php-fpm &
sleep 3
check_php_fpm
# Verificando configuração Nginx
log_info "Verificando configuração do Nginx..."
nginx -t 2>&1 | logger -t nginx-config
if [ $? -ne 0 ]; then
log_error "Configuração do Nginx inválida"
else
log_success "Configuração do Nginx válida"
fi
# Iniciando Nginx em primeiro plano com redirecionamento de logs
log_info "Iniciando Nginx..."
exec nginx -g "daemon off;" 2>&1 | logger -t nginx
echo -e "\n${GREEN}=== Container Sintoniza inicializado ===${NC}\n"
wait -n
exit $?