繁体   English   中英

如何使用 docker-compose 在 docker 内挂载 AWS EFS?

[英]How to mount AWS EFS inside docker using docker-compose?

我有一个带有共享文件的 efs 驱动器,我想将它安装在 docker 容器中以在 ECS 上运行。 AWS 有一个使用任务定义的建议方法。 但是,我想使用docker-compose来完成,而不是更改我们通过控制台等管理的任务定义。

我在下面附加了我正在使用的代码段,但是共享驱动器没有被安装,并且在下面给出了以下错误。 它是空的,不显示共享的 efs。 有人可以建议我在这里做错了什么以及如何更改 dockerfile 或 docker-compose yml 以获得所需的结果。

码头工人-compose.yml

version: "3.9"
services:
  server:
    build: .
    image: xyz
    command: "gunicorn -w 4 -k uvicorn.workers.UvicornWorker app.server:server -b 0.0.0.0:8000"
    volumes:
      - type: volume
        source: efs_volume
        target: /mnt/efs_xyz
volumes:
  efs_volume:
    driver: local
    driver_opts:
      type: "nfs4"
      o: "addr=fs-xxxxxx.efs.useast1.amazonaws.com,rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
      device: ":/"

下面是我的Dockerfile

FROM python:3.8-slim-buster
RUN apt-get update -y &&  apt-get install -y \
    vim \
    g++ \
    unixodbc-dev \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt Docker* docker* .docker* ./app/

RUN python -m pip install --no-cache-dir -r requirements.txt 

运行 docker-compose up 时出错

Cannot start service server: error while mounting volume '/var/lib/docker/volumes/app_efs_volume/_data': failed to mount local volume: mount :/:/var/lib/docker/volumes/app_efs_volume/_data, data: addr=fs-0bb4dbbf.efs.us-east-1.amazonaws.com,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport: invalid argument

根据这个答案,只有type: nfs (not type: nfs4 ) 允许使用addr=<hostname>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM