ASSINE A NEWSLETTER

Cadastrando...
PIX uDesenv pix deposito

WSDL Windows com PHP, Docker e Laravel

Autor: Eurai Criado: 23/03/2025 Atualizado: 24/03/2025

 

Para ativar o WSDL no windows

 

 

Reiniciar a máquina.

No terminal executar: wsl --list

Na loja (Microsoft store)

 

 

 

 

 

Utilizando:

 

Listas arquivos

ls -a

 

Acessar minha unidade E:\

cd /mnt/e

 

Abrir pasta / Unidade

cd /mnt/e/z-dev/php/www/udesenv.com.br

 

 

 

Docker

Instalar Dependências no Ubuntu

1) sudo apt update && sudo apt upgrade -y

 

2) sudo apt install -y ca-certificates curl gnupg lsb-release

 

 

Adicionar o Repositório do Docker 

1) sudo mkdir -m 0755 -p /etc/apt/keyrings

2) curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null

3) echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4) sudo apt update

 

Instalar o Docker no Ubuntu do WSL

1) sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

Instalar o Docker no Ubuntu do WSL

1) sudo usermod -aG docker $USER

2) newgrp docker

 

Configurar o Docker para rodar no WSL

1) docker --version

2) docker run hello-world

Nota: Foram +-4gb de espaço do nvme até o momento

 

 

Docker e PHP

Pasta onde esta meu projeto PHP com docker

1) cd /mnt/e/z-dev/php/www/udesenv.com.br_lara

Construir a imagem

1) docker compose build

Subir

1) docker compose up / docker compose up -d

 

 

Mysql do Docker via windows 

 

Heidi Programa

Docker comandos

 

Buildar a img: docker compose build

Subir e rodar: docker compose up

Subir e rodar "deamon/background": docker compose up -d

Derrubar:               docker compose up down

Container executando: docker ps

Docker Listar: docker ps -a

Acessar container modo iterativo (comandos): docker exec -it udesenv-web bash

Renomear name: docker rename "name" "novonome"

Docker Iniciar: docker start "Id" ou "name" 

Docker exec: docker exec "Id" ou "name" ps -ef (precisa estar em execucao)

Docker Entrar: docker attach "Id" ou "name"

Docker Sair: exit

Docker Remover: docker rm -f "id" ou "name" 

Docker Remover Images: docker rmi -f "id" ou "name" 

Docker Images: docker images 

Limpar todas imagens "Format": docker system prune

Limpar "geral": docker system prune --all --force --volumes

Remover rede: docker network rm [rede]

Inspecionar rede: docker network inspect [rede]

Desconectar rede: docker network disconnect [container_id]

Tamanho das imagens, pasta, quanto está ocupando: docker system df

 

Limpeza completa:

docker container prune -f

docker image prune -a -f

docker volume prune -f

docker network prune -f

docker system prune -a -f

 

Laravel e PHP

 

Exemplo de ENV

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=udesenv
DB_USERNAME=root
DB_PASSWORD=

Docker compose:

services:
  # nginx:
  #     build:
  #         context: ./
  #         args:
  #             NGINX_VERSION: '1.25.2'
  #             # https://hub.docker.com/_/nginx
  #         dockerfile: ./docker/nginx/Dockerfile
  #     image: udesenv/nginx
  #     ports:
  #         - '80:80'
  #         - '443:443'
  #     volumes:
  #         - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
  #         - ./docker/nginx/sites-available:/etc/nginx/sites-available
  #         - ./docker/nginx/conf.d:/etc/nginx/conf.d
  #         - ./docker/nginx/letsencrypt:/etc/letsencrypt
  #         - ./web:/var/www/web
  #     networks:
  #         - net_local
  node:
      image: node:alpine
      container_name: udesenv_lara-node
      volumes:
        - ./web:/var/www/web
      ports:
        - "7002:7002" #vite
      working_dir: /var/www/web
      entrypoint: ["/bin/sh", "-c"]
      command: [
        "npm install && chmod -R 755 ./node_modules && npm run dev -- --port 7002 --host 0.0.0.0"
      ]
      networks:
        - web
      # command: [
      #     "npm install ",
      #     "npm", "run", "dev",
      #     "--port", "5173",
      #     "--host", "0.0.0.0"
      # ]
  web:
    image: udesenv_lara/php83
    container_name: udesenv_lara-web
    # command: npm start
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
      args:
        PHP_VERSION: '8.3.8-fpm-bullseye'
    volumes:  #para dev, deixar descomentado, para replicar sempre que alterar
        - ./web:/var/www/web
    develop:
     watch:
        - action: sync
          path: ./web
          target: /var/www/web
    ports:
      - "80:80" #http
     # - "5173:5173" #vite
      - "8000:8000" #http artisan
      - "8088:8088" #ngnix
      - "443:443" #https
        # - action: rebuild
        #   path: ./package.json
        #   target: /web/package.json          
    networks:
      - web
    #  command: /bin/sh -c "php -S 0.0.0.0:8000 -t public"
    #     depends_on:
    #         - mysql
  mariadb:
      image: mariadb:11.4.2
      container_name: udesenv_lara-mariadb11
      restart: always
      ports:
        - '3307:3306'
      environment:
          MYSQL_ROOT_PASSWORD:
          MYSQL_ROOT_HOST: "%"
          MYSQL_DATABASE: udesenv
          MYSQL_USER: root
          MYSQL_PASSWORD:
          MYSQL_ALLOW_EMPTY_PASSWORD: 1
          MYSQL_COLLATION: utf8mb3_swedish_ci
      volumes:
          - ./database:/var/lib/mysql
      networks:
          - web
networks:
    web:
        driver: bridge  
      # healthcheck:
      #   test: ["CMD","mysqladmin","ping","-p"]
      #   retries: 3
      #   timeout: 5s
#volumes:
  #docker-sync:
    #external: true
#   db_data:
# https://hub.docker.com/_/php/tags?page=&page_size=&ordering=&name=8.3
# networks:
#     net_local:
#         driver: bridge

Supervisor:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0770
chown=nobody:nogroup
# username = mysupervisord
# password = mysupervisordpass

[supervisord]
nodaemon=true
user=root

[program:nginx]
command = nginx -c /etc/nginx/nginx.conf  -g 'daemon off;'
user = root
autostart = true

[program:php-fpm]
command=docker-php-entrypoint php-fpm
user=root
autostart=true
nodaemon=true
autorestart=true

[program:artisan]
command=php artisan serve --host=0.0.0.0 --port=8000
directory=/var/www/web
user=root
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/artisan.log
stderr_logfile=/var/log/supervisor/artisan_err.log

#[program:npm]
#command=npm run dev
#directory=/var/www/web
#user=root
#autostart=true
#autorestart=true
#stdout_logfile=/var/log/supervisor/npm.log
#stderr_logfile=/var/log/supervisor/npm_err.log

 

Está rodando com php artisan. Ainda não corrigi para ir no ngnix

 

vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    server: {
        host: '0.0.0.0', // Permite acesso externo ao container
        port: 7002,      // Porta que foi definida no Docker
        strictPort: true,
        hmr: {
            host: '127.0.0.1', // Nome do container do Node
            port: 7002,
        }
    },
    plugins: [
        laravel({
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
            ],
            refresh: true,
        }),
    ],
});

 

 

  • Até o momento testando e subindo imagens (a mesma), foram mais 18gb

 

 

Conclusão

  • Funcionou
  • Consome bastante espaço, o mesmo do docker para windows
  • Navegação do site é bem lento comparado a utilizar local com php direto no windows
    • 48ms local
    • 4 segundo no docker
  • Mariadb
    • Restauração de um banco de 4gb levou 1 hora no dockers (externo)
    • Local direto levou no máximo 6 minuto.
  • Próxima etapa será testar direto em dual boot e analisar o desempenho

 

Adicional

Terminal windows melhorado

 

 

 

 

 

 

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço, e até a próxima