用 docker 构建 laravel 开发环境

编写 dockerfile

FROM php:8.0-fpm

# 安装所需依赖和扩展
RUN apt-get update && apt-get install -y \
    curl \
    zip \
    unzip \
    git \
    libonig-dev \
    libpng-dev \
    libxml2-dev \
    libzip-dev \
    && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd dom zip

# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 创建新用户并设置工作目录属于新用户
RUN useradd -ms /bin/bash -u 1000 laraveluser

# 创建并修改 Composer 目录的所有权
RUN mkdir /composer && chown laraveluser:laraveluser /composer

# 更新 Composer 的全局包安装路径并将其添加到系统路径中
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin

# 设置工作目录
WORKDIR /app

# 更改工作目录所有权并切换到新用户
RUN chown -R laraveluser:laraveluser /app
USER laraveluser

CMD ["bash"]

现在 /composer 目录的所有权归属于 laraveluser。重新构建 Docker 镜像,然后运行容器。

按照以下步骤根据给定的 Dockerfile 构建镜像并运行实例:

第一步:构建 Docker 镜像

在你的工作目录下,确保已经存在一个名为 Dockerfile 的文件,其中包含之前提供的内容。

然后,在当前目录中运行以下命令构建 Docker 镜像:

docker build -t laravel-init .

这将根据 Dockerfile 构建一个名为 laravel-init 的 Docker 镜像。

第二步:运行 Docker 容器

运行以下命令以创建并运行一个名为 laravel-init-container 的新 Docker 容器:

docker run -it --name laravel-init-container -v "$(pwd):/app" -p 8000:8000 laravel-init

此命令使用 -it 选项以交互模式运行容器,并使用 -v "$(pwd):/app" 参数将本地工作目录绑定到容器内部的 /app 工作目录。同时,使用 -p 8000:8000 参数将本地 8000 端口映射到容器的 8000 端口。最后,设置容器名称为 laravel-init-container 并使用 laravel-init 镜像。

现在你应该已经进入了容器的命令行界面。

初始化 laravel 环境

在 Docker 容器中初始化 Laravel 项目并启动服务器,请按照以下步骤操作:

第一步:安装 Laravel Installer

在容器内部,首先安装 Laravel Installer:

composer global require laravel/installer

第二步:将 Laravel Installer 添加到系统路径

将 Laravel Installer 添加到容器内的系统路径中:

export PATH="$PATH:/composer/vendor/bin"

第三步:创建一个新的 Laravel 项目

使用 Laravel Installer 在容器内通过以下命令初始化一个新的 Laravel 项目(将 <project-name> 替换为你的项目名称):

laravel new <project-name>

第四步:进入 Laravel 项目目录

进入新创建的 Laravel 项目目录:

cd <project-name>

第五步:启动 Laravel 开发服务器

启动内置开发服务器(使用 0.0.0.0 IP 地址以便从容器外部访问该服务器,同时映射到本地 8000 端口):

php artisan serve --host=0.0.0.0 --port=8000

现在,你可以在浏览器中通过 http://localhost:8000 访问新创建的 Laravel 项目。

如果需要关闭服务器并退出容器,在命令行界面输入 Ctrl+C 停止服务器,然后输入 exit

发表评论