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

如何在Elastic Beanstalk Docker应用挂载EFS卷?兼容问题排查

解决Elastic Beanstalk(Amazon Linux 2)Docker环境挂载EFS的问题

一、先清理旧配置残留

  • 确认部署包已完全移除.ebextensions文件夹,重新打包后重新部署
  • 登录EC2实例手动清理残留文件:
    • 执行sudo rm -f /tmp/mount-efs.sh删除旧脚本
    • 检查/etc/fstab,如果有旧的EFS挂载条目直接删除
    • 若已挂载异常路径,执行sudo umount <挂载路径>卸载后重启实例

二、适配Amazon Linux 2的EFS挂载配置

Amazon Linux 2自带amazon-efs-utils工具,无需用Amazon Linux 1的旧脚本,推荐用以下两种方式配置:

方式1:平台钩子(EB官方推荐)

在项目根目录创建.platform/hooks/predeploy文件夹,添加mount-efs.sh脚本:

#!/bin/bash
set -e

# 替换为你的EFS ID和目标挂载路径
EFS_ID="fs-xxxxxxxxx"
MOUNT_DIR="/mnt/efs"

# 安装EFS工具(未安装则自动安装)
sudo yum install -y amazon-efs-utils

# 创建挂载目录
sudo mkdir -p $MOUNT_DIR

# 未挂载则执行挂载操作
if ! mount | grep -q $MOUNT_DIR; then
    sudo mount -t efs $EFS_ID:/ $MOUNT_DIR
    # 添加到fstab实现开机自动挂载
    echo "$EFS_ID:/ $MOUNT_DIR efs defaults,_netdev 0 0" | sudo tee -a /etc/fstab
fi

给脚本添加执行权限:chmod +x .platform/hooks/predeploy/mount-efs.sh

方式2:.ebextensions配置

创建.ebextensions/mount-efs.config文件:

commands:
  01_install_efs_utils:
    command: yum install -y amazon-efs-utils
  02_create_mount_dir:
    command: mkdir -p /mnt/efs
  03_mount_efs:
    command: mount -t efs fs-xxxxxxxxx:/ /mnt/efs
    test: "! mount | grep -q /mnt/efs"
  04_fstab_entry:
    command: echo "fs-xxxxxxxxx:/ /mnt/efs efs defaults,_netdev 0 0" >> /etc/fstab
    test: "! grep -q 'fs-xxxxxxxxx:/ /mnt/efs' /etc/fstab"

注意替换fs-xxxxxxxxx为你的EFS文件系统ID,/mnt/efs为实际需要的挂载路径。

三、验证挂载效果

部署完成后登录EC2实例,执行以下命令确认:

  • mount | grep efs:查看是否存在EFS挂载条目
  • df -h:确认挂载路径已显示在磁盘列表中
  • 在挂载路径写入测试文件,重启实例后检查文件是否保留,验证持久化生效

四、Docker-compose中关联挂载路径

在docker-compose.yml里,将容器内需要持久化的目录映射到EFS挂载路径:

services:
  your-service:
    image: your-image
    volumes:
      - /mnt/efs/your-data:/container/path/to/data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:25:22