WordPress +  Sage + Alpine.js + Docker

WordPress + Sage + Alpine.js + Docker

Docker Programação
Inklys
8 de julho de 2024
74

É, 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
    container_name: wordpress_db
    restart: unless-stopped
    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:/docker-entrypoint-initdb.d
    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_20.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.

Inklys Araújo

Inklys Araújo

Técnico em Informática efetivo no município de Itaporanga PB, cedido ao Cartório Eleitoral de Itaporanga PB, graduado em Licenciatura em Computação, Pós Graduado em Ensino de Informática.

You May Also Like!

Deixe um comentário

O seu endereço de e-mail não será publicado.