[英]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.