在Debian上使用Docker容器化部署Laravel应用程序是一个相对简单的过程。以下是一个详细的步骤指南,帮助你完成这个任务:
安装Docker:确保你的Debian系统上已经安装了Docker。如果没有安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install docker.io
安装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
首先,创建一个新的目录来存放你的Laravel项目,并进入该目录:
mkdir laravel-docker
cd laravel-docker
你可以使用Composer来初始化一个新的Laravel项目。如果你已经有一个现有的Laravel项目,可以跳过这一步。
composer create-project --prefer-dist laravel/laravel .
在项目根目录下创建一个名为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
在项目根目录下创建一个名为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;
}
}
如果你选择使用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:
如果你使用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应用程序。