Chuyển đến nội dung chính

Tạo docker-compose để làm môi trường cho Laravel Octane


Bạn có thể tham khảo template sau dành cho docker-compose có support Laravel Octane

version: '3'

services:
  app:
    image: octane_app # tên của image
    container_name: octane_app # tên của container
    volumes:
      - ./:/var/www/html # đường dẫn của code Laravel trên máy tính host
    environment:
      APP_NAME: ${APP_NAME}
      APP_ENV: ${APP_ENV}
      APP_KEY: ${APP_KEY}
      APP_DEBUG: ${APP_DEBUG}
      APP_URL: ${APP_URL}
      LOG_CHANNEL: ${LOG_CHANNEL}
      DB_CONNECTION: ${DB_CONNECTION}
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_DATABASE: ${DB_DATABASE}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
      OCTANE_ENABLED: true # kích hoạt Octane
    ports:
      - "80:8000" # cổng truy cập ứng dụng

  worker:
    image: octane_app
    container_name: octane_worker
    command: php artisan queue:work --once
    volumes:
      - ./:/var/www/html
    environment:
      APP_NAME: ${APP_NAME}
      APP_ENV: ${APP_ENV}
      APP_KEY: ${APP_KEY}
      APP_DEBUG: ${APP_DEBUG}
      APP_URL: ${APP_URL}
      LOG_CHANNEL: ${LOG_CHANNEL}
      DB_CONNECTION: ${DB_CONNECTION}
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_DATABASE: ${DB_DATABASE}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
      OCTANE_ENABLED: true
    depends_on:
      - db # sử dụng dịch vụ db để kết nối đến MariaDB
      - redis # sử dụng dịch vụ redis để lưu trữ Cache

  nginx:
    image: nginx:alpine
    container_name: octane_nginx
    ports:
      - "8000:80" # cổng truy cập ứng dụng
    volumes:
      - ./:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

  db:
    image: mariadb:10.6
    container_name: octane_db
    volumes:
      - ./docker/mariadb/data:/var/lib/mysql # đường dẫn để lưu trữ dữ liệu của MariaDB
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}

  redis:
    image: redis:alpine
    container_name: octane_redis
    volumes:
      - ./docker/redis/data:/data # đường dẫn để lưu trữ dữ liệu của Redis


Trong đó, bạn cần cấu hình các biến môi trường để kết nối đến MariaDB, chẳng hạn như tên database, tên user, password, và root password. Bạn cũng cần đặt đường dẫn để lưu trữ dữ liệu của MariaDB.

Đối với Redis, bạn cũng cần đặt đường dẫn cho phù hợp

Nhận xét