docker-compose无法正确绑定卷

时间:2019-11-21 16:38:07

标签: docker docker-compose

我有运行在Docker容器中的.NET Core 3.0应用程序。我想将应用程序日志存储在容器外部,因此我尝试配置docker-compose文件以将我的应用程序日志文件夹 / app / log 从容器安装到 / var / log 路径”。这是我的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文件夹中找到日志文件。

1 个答案:

答案 0 :(得分:1)

您需要使用:

docker-compose run

代替docker run

区别在于docker-compose会自动在compose文件中设置卷。本质上,它是围绕docker cli的包装。