在我的 Windows 电脑上的 Docker 桌面上,应用程序可以写入其安装的文件夹。
在 ec2 amazon linux 上,我使用
docker-compose up
构建容器
它们运行正常,但是当它们尝试将文件写入已安装的文件夹时,它会得到
permission denied
,
我使用了
sudo docker exec -it containerId sh
并看到:
whoami
返回app
ls -l MountedFolder/
显示我要使用此属性写入的文件夹
drwxr-xr-x 2 root root
我的 compose.yaml:
services:
webapp1:
build:
context: ./Store
target: final
ports:
- 8082:8080
volumes:
- ./volumes/App_Data/:/app/App_Data
container_name: webapp1
Dockerfile
# syntax=docker/dockerfile:1
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
COPY . /source
WORKDIR /source/WebUI
ARG TARGETARCH
RUN --mount=type=cache,id=nuget,target=/root/.nuget/packages \
dotnet publish -a ${TARGETARCH/amd64/x64} --use-current-runtime --self-contained false -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS final
WORKDIR /app
COPY --from=build /app .
USER $APP_UID
ENTRYPOINT ["dotnet", "WebUI.dll"]
不确定这是否是一个好的解决方案,但这就是我现在所拥有的。
我向我将安装的所有文件夹授予权限:
sudo chmod -R a+rw /App_Data
此后我打电话
sudo docker-compose up
并且 docker 容器应用程序不再出现权限被拒绝的错误