debian

Laravel在Debian上如何使用Docker容器化部署

小樊
47
2025-03-31 06:48:14
栏目: 智能运维

在Debian上使用Docker容器化部署Laravel应用程序是一个相对简单的过程。以下是一个详细的步骤指南,帮助你完成这个任务:

前提条件

  1. 安装Docker:确保你的Debian系统上已经安装了Docker。如果没有安装,可以使用以下命令进行安装:

    sudo apt update
    sudo apt install docker.io
    
  2. 安装Docker Compose(可选):虽然可以使用Docker命令行工具,但使用Docker Compose可以更方便地管理多个容器。安装Docker Compose的步骤如下:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

步骤指南

1. 创建项目目录

首先,创建一个新的目录来存放你的Laravel项目,并进入该目录:

mkdir laravel-docker
cd laravel-docker

2. 初始化Laravel项目

你可以使用Composer来初始化一个新的Laravel项目。如果你已经有一个现有的Laravel项目,可以跳过这一步。

composer create-project --prefer-dist laravel/laravel .

3. 创建Dockerfile

在项目根目录下创建一个名为Dockerfile的文件,并添加以下内容:

# 使用官方PHP镜像作为基础镜像
FROM php:8.0-fpm

# 安装必要的扩展
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    libzip-dev \
    zip \
    curl \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd pdo_mysql mbstring xml zip opcache

# 安装Nginx
RUN apt-get install -y nginx

# 复制Nginx配置文件
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 复制Laravel项目文件
COPY . /var/www/html

# 设置工作目录
WORKDIR /var/www/html

# 安装Laravel依赖
RUN composer install --no-interaction --prefer-dist

# 设置文件权限
RUN chown -R www-data:www-data /var/www/html

# 暴露端口
EXPOSE 80

# 启动Nginx和PHP-FPM
CMD service nginx start && php-fpm

4. 创建Nginx配置文件

在项目根目录下创建一个名为nginx.conf的文件,并添加以下内容:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~ /\.ht {
        deny all;
    }
}

5. 创建Docker Compose文件(可选)

如果你选择使用Docker Compose,可以在项目根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3'
services:
  app:
    build: .
    volumes:
      - .:/var/www/html
    ports:
      - "80:80"
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_USER: laraveluser
      MYSQL_PASSWORD: laravelpassword
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

6. 构建和运行容器

如果你使用Docker Compose,可以直接运行以下命令来构建和启动所有服务:

docker-compose up --build -d

如果你没有使用Docker Compose,可以分别构建和启动Nginx和PHP-FPM容器:

# 构建PHP-FPM镜像
docker build -t laravel-php .

# 运行PHP-FPM容器
docker run -d --name laravel-php -v $(pwd):/var/www/html laravel-php

# 构建Nginx镜像
docker build -t laravel-nginx .

# 运行Nginx容器
docker run -d --name laravel-nginx -p 80:80 -v $(pwd):/var/www/html laravel-nginx

验证部署

打开浏览器并访问http://localhost,你应该能够看到Laravel的欢迎页面。

通过以上步骤,你已经成功地在Debian上使用Docker容器化部署了一个Laravel应用程序。

0
看了该问题的人还看了