如何使用 docker-compose 挂载主机目录,在 运行 主机时指定“~/path/on/host”,而不是在 docker-compose 文件中

How to mount a host directory with docker-compose, with the "~/path/on/host" to be specified when running the host, not in the docker-compose file

我想知道如何使用 docker-compose 挂载主机目录。

目前我只使用常规的 Dockerfile,它工作正常。当我 运行 容器时,我只指定主机上的路径和容器上的路径。

docker run -d -p 3000:3000 -v ~/path/on/host:/path/on/container my-container

我想使用 docker-compose 来实现这一点,但我不确定下面的 works.My docker compose 是如何实现的。

version: '3'

services:
  my-app:
    build:
      context: .
      dockerfile: ./path/to/Dockerfile

此外,我需要在 运行 连接主机时指定 ~/path/on/host,而不是在 docker-compose 文件中指定。

version: '3'

services:
  my-app:
    build:
      context: .
      dockerfile: ./path/to/Dockerfile
    volumes:
      - ~/path/on/host:/path/on/container
    ports:
      - "3000:3000"

然后您可以使用 docker-compose up -d 开始您的服务。确保首先停止并删除您使用 docker 命令启动的容器,否则会发生冲突。

根据评论进行编辑:

创建一个包含以下内容的 .env 文件:

HOST_PATH=~/path/on/host

并更改您的 docker-compose.yml:

version: '3'

services:
  my-app:
    build:
      context: .
      dockerfile: ./path/to/Dockerfile
    volumes:
      - ${HOST_PATH}:/path/on/container
    ports:
      - "3000:3000"