Usando docker-compose personalizado

 

Paso 1: Crear archivos necesarios

Crea una carpeta para tu proyecto y dentro crea un archivo docker-compose.yml:

yaml
version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: laravel_app
    restart: unless-stopped
    working_dir: /var/www/html
    volumes:
      - ./:/var/www/html
    networks:
      - laravel

  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    ports:
      - "8000:80"
    volumes:
      - ./:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - laravel

  db:
    image: mysql:8.0
    container_name: mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - laravel

volumes:
  dbdata:

networks:
  laravel:
    driver: bridge

Paso 2: Crear archivo Dockerfile

dockerfile
FROM php:8.2-fpm

# Instalar dependencias del sistema
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Limpiar cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Instalar extensiones de PHP
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Obtener Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Crear usuario para la aplicación
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

# Copiar contenido existente del directorio
COPY . /var/www/html

# Copiar permisos de directorio existente
COPY --chown=www:www . /var/www/html

# Cambiar al usuario
USER www

# Exponer el puerto 9000 y ejecutar php-fpm server
EXPOSE 9000
CMD ["php-fpm"]

Paso 3: Crear archivo nginx.conf

nginx
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Paso 4: Instalar Laravel

bash
# Crear proyecto Laravel
docker run --rm -v $(pwd):/app composer create-project laravel/laravel .

# Dar permisos
sudo chown -R $USER:$USER .

# Levantar los contenedores
docker-compose up -d

# Ejecutar migraciones
docker-compose exec app php artisan migrate

🎯 Comandos útiles

bash
# Ver contenedores en ejecución
docker ps

# Detener contenedores
docker-compose down

# Ver logs
docker-compose logs

# Ejecutar comandos en el contenedor de la app
docker-compose exec app php artisan make:model Producto

✅ Verificar instalación

Una vez que todo esté corriendo, visita:

Deberías ver la página de bienvenida de Laravel.

💡 Consejos para principiantes

  1. Empieza con Laravel Sail - Es la opción más sencilla

  2. No te preocupes por los errores - Son normales al principio

  3. Guarda tus archivos de configuración - Te servirán para futuros proyectos

  4. Practica los comandos básicos de Docker

Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Tutorial de Carpetas y Directorios en Ubuntu Linux

Instalar Docker en Ubuntu Server usando docker.io