WSDL Windows com PHP, Docker e Laravel
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