Skip to content

Commit 13a13ff

Browse files
committed
fix: adjust build
1 parent 2380a6e commit 13a13ff

File tree

2 files changed

+38
-104
lines changed

2 files changed

+38
-104
lines changed

Dockerfile

Lines changed: 20 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,125 +1,44 @@
1-
# Estágio 1: Instalar dependências PHP
2-
FROM composer:2 AS composer-builder
3-
4-
WORKDIR /app
5-
6-
# Copiar apenas arquivos de dependências primeiro (cache layer)
7-
COPY composer.json composer.lock ./
8-
9-
# Instalar dependências de produção (sem dev dependencies)
10-
RUN composer install \
11-
--no-dev \
12-
--no-interaction \
13-
--no-progress \
14-
--no-scripts \
15-
--prefer-dist \
16-
--optimize-autoloader
17-
18-
# Copiar o resto da aplicação
19-
COPY . .
20-
21-
# Rodar scripts do composer
22-
RUN composer dump-autoload --optimize
23-
24-
25-
# Estágio 2: Build dos assets frontend (precisa de PHP e Node)
26-
FROM php:8.2-cli-alpine AS frontend-builder
27-
28-
# Instalar Node.js
29-
RUN apk add --no-cache nodejs npm
30-
31-
WORKDIR /app
32-
33-
# Copiar vendor do composer (necessário para o wayfinder)
34-
COPY --from=composer-builder /app/vendor ./vendor
35-
36-
# Copiar arquivos da aplicação necessários para o wayfinder
37-
COPY artisan ./
38-
COPY app ./app
39-
COPY bootstrap ./bootstrap
40-
COPY config ./config
41-
COPY routes ./routes
42-
43-
# Copiar arquivos do frontend
44-
COPY package.json package-lock.json* ./
45-
COPY resources ./resources
46-
COPY vite.config.ts tsconfig.json ./
47-
COPY public ./public
48-
49-
# Instalar dependências do Node e fazer build
50-
RUN npm ci && npm run build
51-
52-
53-
# Estágio 3: Imagem final de produção
541
FROM php:8.2-fpm-alpine
552

56-
# Instalar extensões PHP necessárias para Laravel
3+
# Instalar dependências básicas
574
RUN apk add --no-cache \
585
postgresql-dev \
59-
libpng-dev \
60-
libjpeg-turbo-dev \
61-
freetype-dev \
626
libzip-dev \
637
oniguruma-dev \
64-
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
65-
&& docker-php-ext-install -j$(nproc) \
66-
pdo \
67-
pdo_pgsql \
68-
pgsql \
69-
gd \
70-
zip \
71-
mbstring \
72-
opcache \
73-
pcntl \
74-
bcmath
8+
nodejs \
9+
npm
7510

76-
# Configurar OPcache para produção
77-
RUN { \
78-
echo 'opcache.enable=1'; \
79-
echo 'opcache.memory_consumption=256'; \
80-
echo 'opcache.interned_strings_buffer=16'; \
81-
echo 'opcache.max_accelerated_files=20000'; \
82-
echo 'opcache.validate_timestamps=0'; \
83-
echo 'opcache.save_comments=1'; \
84-
echo 'opcache.fast_shutdown=1'; \
85-
} > /usr/local/etc/php/conf.d/opcache.ini
11+
# Instalar extensões PHP necessárias
12+
RUN docker-php-ext-install pdo pdo_pgsql zip mbstring
8613

87-
# Configurar PHP-FPM
88-
RUN { \
89-
echo '[www]'; \
90-
echo 'pm = dynamic'; \
91-
echo 'pm.max_children = 50'; \
92-
echo 'pm.start_servers = 10'; \
93-
echo 'pm.min_spare_servers = 5'; \
94-
echo 'pm.max_spare_servers = 20'; \
95-
echo 'pm.max_requests = 500'; \
96-
} > /usr/local/etc/php-fpm.d/zz-custom.conf
14+
# Instalar Composer
15+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
9716

9817
WORKDIR /var/www/html
9918

100-
# Copiar dependências do Composer
101-
COPY --from=composer-builder /app/vendor ./vendor
19+
# Copiar aplicação
20+
COPY . .
10221

103-
# Copiar assets buildados
104-
COPY --from=frontend-builder /app/public/build ./public/build
22+
# Instalar dependências PHP
23+
RUN composer install --no-dev --optimize-autoloader
10524

106-
# Copiar aplicação
107-
COPY --chown=www-data:www-data . .
25+
# Instalar dependências Node e fazer build
26+
RUN npm ci && npm run build
10827

109-
# Criar diretórios necessários e ajustar permissões
28+
# Criar diretórios necessários
11029
RUN mkdir -p storage/framework/cache \
11130
storage/framework/sessions \
11231
storage/framework/views \
11332
storage/logs \
114-
bootstrap/cache \
115-
&& chown -R www-data:www-data storage bootstrap/cache \
116-
&& chmod -R 775 storage bootstrap/cache
33+
bootstrap/cache
11734

118-
# Expor porta do PHP-FPM
119-
EXPOSE 9000
35+
# Ajustar permissões
36+
RUN chown -R www-data:www-data storage bootstrap/cache && \
37+
chmod -R 775 storage bootstrap/cache
12038

12139
# Usar usuário www-data
12240
USER www-data
12341

124-
# Comando padrão
42+
EXPOSE 9000
43+
12544
CMD ["php-fpm"]

docker-compose.prod.yml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
version: '3.8'
22

33
services:
4+
nginx:
5+
image: nginx:alpine
6+
container_name: my-site-nginx
7+
restart: unless-stopped
8+
ports:
9+
- "80:80"
10+
- "443:443"
11+
volumes:
12+
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
13+
- ./public:/var/www/html/public
14+
networks:
15+
- app-network
16+
depends_on:
17+
- app
18+
419
app:
520
build:
621
context: .
722
dockerfile: Dockerfile
823
container_name: my-site-app
924
restart: unless-stopped
10-
environment:
11-
- APP_ENV=production
12-
- APP_DEBUG=false
25+
env_file:
26+
- .env
1327
volumes:
1428
- ./storage:/var/www/html/storage
29+
- ./public:/var/www/html/public
1530
networks:
1631
- app-network
1732
depends_on:

0 commit comments

Comments
 (0)