docker nginx部署laravel
时间: 2023-10-30 10:05:35 浏览: 145
要在Docker中部署Laravel应用程序,你可以使用以下步骤:
1. 首先,在你的Laravel项目根目录下创建一个名为`Dockerfile`的文件,并添加以下内容:
```
# 使用官方的PHP镜像作为基础镜像
FROM php:7.4-fpm
# 安装一些必要的依赖
RUN apt-get update && apt-get install -y \
git \
unzip \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
curl
# 安装Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 设置工作目录
WORKDIR /var/www
# 复制项目文件到工作目录
COPY . /var/www
# 安装项目依赖
RUN composer install --no-interaction --optimize-autoloader
# 设置文件夹权限
RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache
# 生成应用密钥
RUN php artisan key:generate
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
```
2. 创建一个名为`docker-compose.yml`的文件,并添加以下内容:
```
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
image: laravel-app
container_name: laravel-app
restart: unless-stopped
ports:
- 8000:9000
volumes:
- .:/var/www
networks:
- laravel
nginx:
image: nginx:latest
container_name: laravel-nginx
restart: unless-stopped
ports:
- 80:80
volumes:
- .:/var/www
- ./nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- laravel
networks:
laravel:
```
3. 在你的Laravel项目根目录下创建一个名为`nginx.conf`的文件,并添加以下内容:
```
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
}
```
4. 确保你的Laravel项目根目录下有一个`.env`文件,其中包含正确的数据库连接和其他配置。
5. 在项目根目录中运行以下命令以构建和启动容器:
```
docker-compose up -d --build
```
这将构建并启动包含Laravel应用程序和Nginx服务器的Docker容器。
6. 在浏览器中访问`http://localhost`,你应该能够看到你的Laravel应用程序运行在Docker容器中。
这就是在Docker中部署Laravel应用程序的基本步骤。你可以根据需要进行修改和调整。希望对你有帮助!
阅读全文