我有运行在Docker容器中的.NET Core 3.0应用程序。我想将应用程序日志存储在容器外部,因此我尝试配置docker-compose文件以将我的应用程序日志文件夹 / app / log 从容器安装到 / var / log 我主机上的“ strong>路径”。这是我的docker-compose文件:
version: '3.4'
services:
shikimoritelegrambot:
image: ${DOCKER_REGISTRY}shikimoritelegrambot
build:
context: .
dockerfile: ShikimoriTelegramBot/Dockerfile
volumes:
- /var/log:/app/log
这是我的项目的DOCKERFILE:
FROM mcr.microsoft.com/dotnet/core/runtime:3.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /src
COPY ShikimoriTelegramBot/ShikimoriTelegramBot.csproj ShikimoriTelegramBot/
RUN dotnet restore ShikimoriTelegramBot/ShikimoriTelegramBot.csproj
COPY . .
WORKDIR /src/ShikimoriTelegramBot
RUN dotnet build ShikimoriTelegramBot.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish ShikimoriTelegramBot.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "ShikimoriTelegramBot.dll"]
这里是使用代码https://github.com/otsomkalov/ShikimoriTelegramBot
链接到我的存储库的信息以下是 docker inspect 命令的输出:https://pastebin.com/Dr1iMgPF
实际结果: 我可以在/ app / log容器文件夹中看到我的日志。主机的/ var / log文件夹中缺少日志。
预期结果: 我可以在主机的/ var / log文件夹中找到日志文件。
答案 0 :(得分:1)
您需要使用:
docker-compose run
代替docker run
。
区别在于docker-compose会自动在compose文件中设置卷。本质上,它是围绕docker cli的包装。