编写 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
。