如何使用 docker-compose 文件创建 docker 卷,以便应用程序可以在 运行 时写入文件?

How to create docker volume using docker-compose file so the app can write files to when running?

我有一个使用 ASP.NET Core 3.1 框架编写的应用程序。我正在尝试创建一个 docker 图像以允许我在 Linux 系统上 运行 该应用程序。

我的应用程序允许用户将文件上传到服务器,因此它会将上传的文件写入项目根文件夹中名为 "Storage" 的文件夹中。

我想在 Linux 机器上创建一个永久存储,这样它就不会在删除图像时被破坏。

我创建了以下 docker-compose.yml 文件,其中包含有关如何创建卷的说明

version: '3.4'

services:
  myproject:
    image: ${DOCKER_REGISTRY-}myproject
    build:
      context: .
      dockerfile: MyProject/Dockerfile
    environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - ASPNETCORE_URLS=https://localhost;http://localhost
    - ASPNETCORE_HTTPS_PORT=44344
    ports:
    - 51736:80
    - 44344:443
    volumes:
      - photos:/app/Storage

volumes:
  photos:

据我了解,位于 myproject 服务下的 volumes 将名为 photos 的卷映射到 /app/Storage

但是,我不会使用什么命令在服务器上创建卷,所以它不会被删除。

如何正确创建卷并指向图像以使用它?

您不需要其他任何东西。你已经拥有了一切。 docker-compose 会自动为您创建 photos 卷并在容器重启后保留它。首次启动此堆栈后检查 docker volume ls,您将看到列出的卷。