WordPress + Sage + Alpine.js + Docker
É, o título do post é bem chamativo mesmo, e a promessa é realmente grande, mas é assim que atualmente meu template de blog wordpress foi produzido, fica aqui comigo que eu ti explico tudo que fiz.
Docker do WordPress
Depois que você baixou o WodPress descompacte-o em uma pasta, em seguida dentro dessa pasta crie um arquivo chamado docker-compose.yml e cole o conteúdo abaixo dentro dele:
version: "3.7"
services:
php:
build:
args:
user: sammy
uid: 1000
context: ./docker-compose/php
dockerfile: Dockerfile
image: inklys/php8.1-fpm
container_name: php8.1-fpm
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
networks:
- cad_net
nginx:
build:
args:
user: sammy
uid: 1000
context: ./docker-compose/nginx
dockerfile: Dockerfile
image: inklys/nginx:alpine
container_name: nginx
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./:/var/www
- ./docker-compose/nginx:/etc/nginx/conf.d
networks:
- cad_net
db:
image: mysql:5.7
command: --innodb-use-native-aio=0
container_name: wordpress_db
restart: always
tty: true
environment:
MYSQL_DATABASE: db_wordpress
MYSQL_ROOT_PASSWORD: admin
MYSQL_PASSWORD: admin
MYSQL_USER: db_user
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./docker-compose/mysql:/var/lib/mysql
networks:
- cad_net
networks:
cad_net:
driver: bridge
Nesse arquivo temos 3 containers, e teremos que configurar cada um deles, para isso basta construir a estrutura de diretórios e arquivos, vamos iniciar criando o php, para isso crie uma pasta chamada docker-compose e dentro dela crie outra pasta chamada php e por ultimo crie um arquivo chamado Dockerfile com o conteúdo baixo:
FROM php:8.1-fpm
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Baixar e instalar o WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp
# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_22.x | bash -
RUN apt-get install -y nodejs
# Install yarn
RUN npm install -g yarn
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd mysqli
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# Set working directory
WORKDIR /var/www
USER $user
Em seguida ainda dentro da pasta docker-compose, crie uma nova pasta chamada nginx, crie uma um arquivo Dokerfile com o conteúdo abaixo:
FROM nginx:alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY ./nginx.conf /etc/nginx/conf.d
Ainda dentro da pasta nginx crie um arquivo chamado nginx.conf com o conteúdo abaixo:
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
Pronto, com isso temos nosso Docker pronto para rodar o WordPress com o banco de dados.