Laravel与Docker容器化部署

发布时间:2024-11-10 06:57:41 作者:小樊
来源:亿速云 阅读:78

将Laravel应用程序与Docker容器化部署是一个相对简单的过程。以下是一个基本的步骤指南,帮助你完成这个任务:

1. 安装Docker

首先,确保你已经在你的开发机器上安装了Docker。你可以从Docker官方网站下载并安装适合你操作系统的Docker版本。

2. 创建Dockerfile

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

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

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

# 复制当前目录下的所有文件到工作目录
COPY . /var/www/html

# 安装依赖
RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    libwebp-dev \
    libjpeg-dev \
    libzip-dev \
    libonig-dev \
    zip \
    curl \
    unzip

# 清理缓存
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# 安装PHP扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp
RUN docker-php-ext-install gd pdo_mysql zip exif pcntl

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

# 设置环境变量
ENV COMPOSER_HOME=/root/.composer

# 暴露端口
EXPOSE 80

# 启动PHP-FPM
CMD ["php-fpm"]

3. 创建Docker Compose文件

在你的Laravel项目根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3.8'

services:
    # Laravel应用服务
    app:
        build:
            context: .
            dockerfile: Dockerfile
        image: laravel_app
        container_name: laravel_app_container
        restart: unless-stopped
        tty: true
        environment:
            SERVICE_NAME: app
            SERVICE_TAGS: dev
        working_dir: /var/www/html
        volumes:
            - ./:/var/www/html
        networks:
            - laravel

    # Nginx服务
    nginx:
        image: nginx:stable-alpine
        container_name: nginx_container
        restart: unless-stopped
        tty: true
        ports:
            - "8000:80"
        volumes:
            - ./:/var/www/html
            - ./nginx.conf:/etc/nginx/conf.d/default.conf
        networks:
            - laravel

    # MySQL服务
    mysql:
        image: mysql:5.7-fpm
        container_name: mysql_container
        restart: unless-stopped
        tty: true
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_USER: laravel
            MYSQL_PASSWORD: secret
            MYSQL_ROOT_PASSWORD: root
        volumes:
            - mysql_data:/var/lib/mysql
        networks:
            - laravel

volumes:
    mysql_data:

networks:
    laravel:
        driver: bridge

4. 配置Nginx

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

server {
    listen 80;
    server_name localhost:8000;
    root /var/www/html/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

5. 构建和运行Docker容器

在项目根目录下打开终端,运行以下命令来构建和启动Docker容器:

docker-compose up -d --build

6. 访问你的Laravel应用

打开浏览器,访问http://localhost:8000,你应该能够看到你的Laravel应用在Docker容器中运行。

7. 停止和移除容器

如果你想停止并移除容器,可以运行以下命令:

docker-compose down

这样,你就完成了Laravel应用程序的Docker容器化部署。

推荐阅读:
  1. 如何在PHP项目中利用Laravel实现一个文件下载功能
  2. Laravel 在blade文件中使用Vue组件的案例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

laravel

上一篇:Laravel框架中的门面Facade作用

下一篇:Laravel框架文档编写与维护

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》