You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Elastic Beanstalk部署Docker化Laravel应用并解决依赖安装问题

问题根本原因

你的docker-compose.yml中配置了本地目录挂载规则./:/usr/share/nginx/app/,容器启动时会用本地项目目录的内容直接覆盖镜像内/usr/share/nginx/app路径下的所有文件。你在Dockerfile构建阶段通过RUN composer install生成的vendor目录属于镜像内部文件,挂载后会被本地没有vendor目录的项目直接覆盖,自然就看不到生成的依赖文件。
你之前部署Node.js应用没遇到这个问题,大概率是你之前的Node.js部署没有用本地目录覆盖容器内的代码路径,直接用了镜像内置的代码。

开发环境适配方案

开发阶段需要本地代码修改实时同步到容器,所以不能直接去掉挂载,需要调整挂载规则,排除vendor目录不被本地覆盖:
修改docker-compose.yml中app服务的volumes配置:

volumes:
  - ./:/usr/share/nginx/app/
  # 增加下面这条,将vendor目录挂载留空,使用镜像内的vendor文件
  - /usr/share/nginx/app/vendor

nginx服务的volumes也同步加这条排除规则,避免nginx读取不到依赖相关的静态资源:

volumes:
  - ./:/usr/share/nginx/app/
  - ./nginx/conf.d/:/etc/nginx/conf.d
  - /usr/share/nginx/app/vendor

调整后本地启动docker compose up -d就不需要提前手动执行composer install了,直接用镜像构建阶段生成的依赖。

Elastic Beanstalk 生产部署方案

生产环境不需要本地代码挂载,你完全不需要把vendor目录打包到部署zip包,正确的部署流程如下:

  1. 先修改docker-compose.yml,删除所有本地代码挂载规则,生产环境直接使用镜像内部的代码和依赖:
version: '3'
services:
  #PHP Service
  app:
    build:
      context: ./
      dockerfile: Dockerfile
    image: admin
    container_name: admin-app
    restart: unless-stopped
    working_dir: /usr/share/nginx/app/
    networks:
      - app-network

  nginx:
    image: nginx:stable-alpine
    container_name: admin-nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 只保留nginx配置挂载,或者直接把配置打包到自定义nginx镜像里都可以
      - ./nginx/conf.d/:/etc/nginx/conf.d
    networks:
      - app-network

#Docker Networks
networks:
  app-network:
    driver: bridge
  1. 部署用的zip包只需要打包项目源码、Dockerfile、docker-compose.yml、nginx配置文件即可,不需要包含vendor、node_modules这类可以通过构建生成的依赖目录,注意要把.dockerignore文件加上以下内容,避免构建时把本地的依赖、缓存传到镜像构建上下文:
/vendor
/node_modules
.env
storage/logs/*
bootstrap/cache/*
.DS_Store
.git
.gitignore
  1. 直接把zip包上传到Elastic Beanstalk部署即可,平台会自动执行镜像构建,Dockerfile中的composer install生成的vendor会保留在镜像内部,不会被覆盖。

内容的提问来源于stack exchange,提问作者The_ehT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:57:01