diff --git a/Dockerfile b/Dockerfile index 7b29b60..e423cf6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,21 +12,16 @@ COPY app/ /app/ WORKDIR /app RUN composer install --no-interaction --optimize-autoloader -COPY env.sh /usr/local/bin/env.sh -RUN chmod +x /usr/local/bin/env.sh +# Copy and set permissions for entrypoint script +COPY docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh -COPY start.sh /usr/local/bin/start.sh -RUN chmod +x /usr/local/bin/start.sh - -RUN mkdir -p /app/cache /app/logs \ - && chown -R www-data:www-data /app/cache /app/logs \ - && chmod -R 775 /app/cache /app/logs +RUN mkdir -p /app/cache /app/logs +# Set base permissions for /app RUN chown -R www-data:www-data /app \ && chmod -R 755 /app -VOLUME ["/app/cache", "/app/logs"] - EXPOSE 80 -CMD ["/bin/bash", "-c", "/usr/local/bin/env.sh && /usr/local/bin/start.sh"] +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index 0179e77..2fe2acb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,15 +5,13 @@ services: ports: - "80:80" volumes: - - marreta_cache:/app/cache - - marreta_logs:/app/logs + - ./app/cache:/app/cache + - ./app/logs:/app/logs environment: - SITE_NAME=${SITE_NAME:-} - SITE_DESCRIPTION=${SITE_DESCRIPTION:-} - SITE_URL=${SITE_URL:-} - DNS_SERVERS=${DNS_SERVERS:-} + # Add user mapping to help with permissions + user: "${UID:-1000}:${GID:-1000}" restart: unless-stopped - -volumes: - marreta_cache: - marreta_logs: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..9cc17a5 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +########################################### +# Marreta Docker Entrypoint +# +# Este script inicializa o container do Marreta: +# - Configura variáveis de ambiente +# - Ajusta permissões dos diretórios +# - Inicia e verifica serviços (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}" + exit 1 +} + +# Função para logs de informação +log_info() { + echo -e "${YELLOW}[i] $1${NC}" +} + +echo -e "\n${YELLOW}=== Iniciando Container Marreta ===${NC}\n" + +# === Configuração de Variáveis de Ambiente === +log_info "Configurando variáveis de ambiente..." + +if [ -n "${SITE_NAME}" ]; then + echo "SITE_NAME=${SITE_NAME}" >> /app/.env +fi + +if [ -n "${SITE_DESCRIPTION}" ]; then + echo "SITE_DESCRIPTION=${SITE_DESCRIPTION}" >> /app/.env +fi + +if [ -n "${SITE_URL}" ]; then + echo "SITE_URL=${SITE_URL}" >> /app/.env +fi + +if [ -n "${DNS_SERVERS}" ]; then + echo "DNS_SERVERS=${DNS_SERVERS}" >> /app/.env +fi + +log_success "Variáveis de ambiente configuradas" + +# === Ajuste de Permissões === +log_info "Ajustando permissões dos diretórios..." + +chown -R www-data:www-data /app/cache /app/logs +chmod -R 775 /app/cache /app/logs + +log_success "Permissões ajustadas" + +# === 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 +} + +# === Inicialização dos Serviços === +echo -e "\n${YELLOW}=== Iniciando serviços ===${NC}\n" + +# 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 +log_info "Iniciando PHP-FPM..." +php-fpm & +sleep 3 +check_php_fpm + +# Verificando configuração Nginx +log_info "Verificando configuração do Nginx..." +nginx -t +if [ $? -ne 0 ]; then + log_error "Configuração do Nginx inválida" +else + log_success "Configuração do Nginx válida" +fi + +# Iniciando Nginx +log_info "Iniciando Nginx..." +nginx -g "daemon off;" & +sleep 3 +check_nginx + +echo -e "\n${GREEN}=== Container Marreta inicializado ===${NC}\n" + +wait -n + +exit $? diff --git a/env.sh b/env.sh deleted file mode 100644 index 61f85a3..0000000 --- a/env.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -if [ -n "${SITE_NAME}" ]; then - echo "SITE_NAME=${SITE_NAME}" >> /app/.env -fi - -if [ -n "${SITE_DESCRIPTION}" ]; then - echo "SITE_DESCRIPTION=${SITE_DESCRIPTION}" >> /app/.env -fi - -if [ -n "${SITE_URL}" ]; then - echo "SITE_URL=${SITE_URL}" >> /app/.env -fi - -if [ -n "${DNS_SERVERS}" ]; then - echo "DNS_SERVERS=${DNS_SERVERS}" >> /app/.env -fi - -echo "Variáveis de ambiente salvas com sucesso." diff --git a/start.sh b/start.sh deleted file mode 100644 index ee7fd2e..0000000 --- a/start.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -echo "Iniciando rotinas." - -check_nginx() { - if ! pgrep nginx > /dev/null; then - echo "Falha ao iniciar webservice." - exit 1 - else - echo "Webservice iniciou." - fi -} - -check_php_fpm() { - if ! pgrep php-fpm > /dev/null; then - echo "Falha ao iniciar o PHP." - exit 1 - else - echo "PHP iniciou." - fi -} - -if [ ! -d /var/run/php ]; then - mkdir -p /var/run/php - chown -R www-data:www-data /var/run/php -fi - -echo "Iniciando PHP..." -php-fpm & - -sleep 3 - -check_php_fpm - -sleep 3 - -echo "Testando configuração do webservice..." -nginx -t -if [ $? -ne 0 ]; then - echo "Configuração do webservice invalida." - exit 1 -else - echo "Configuração valida do webservice." -fi - -echo "Iniciando webservice..." -nginx -g "daemon off;" & - -sleep 3 - -check_nginx - -wait -n - -exit $?