【问题标题】:How bind properly container's content to host folder?如何将容器的内容正确绑定到主机文件夹?
【发布时间】:2021-01-20 18:09:02
【问题描述】:

我正在尝试将容器的内容绑定到主机文件夹,以便我可以轻松编辑它,但由于某种原因它不起作用!

这里是我的 docker-compose 文件:

version: "3"
services:
  webserver:
    image: nginx:mainline-alpine
    container_name: webserver
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./config:/etc/nginx/conf.d

请注意,这是我在 docker-compose 命令之前的文件夹结构:

-project
--docker-compose.yaml

提前谢谢你

【问题讨论】:

  • 究竟是什么不工作?请注意,像这样的绑定挂载是将 host 目录暴露到 container 中(因此./config 中的内容将覆盖/etc/nginx/conf.d 中的任何内容)。
  • 我想反其道而行之,这样当容器启动时,nginx的内容就绑定在my , before empty, defined foldesr中,有意义吗?我该怎么做?
  • @kri-dev: 你的问题不清楚

标签: docker nginx docker-compose devops


【解决方案1】:

无法从主机上的容器挂载文件夹。

要实现您想要的,请考虑以下事项

  1. 首先启动未定义任何卷的容器
  2. 运行docker cp webserver:/etc/nginx/conf.d/. ./config,将/etc/nginx/conf.d/的内容复制到主机上的config文件夹中
  3. 杀死容器并使用安装在/etc/nginx/conf.d 上的配置文件夹重新启动它(就像在您的原始示例中一样)。这会将容器中的 nginx 配置与本地计算机上的配置重叠
  4. 编辑本地文件时,它将反映在容器中。

如果您想在完成后将更改保留在映像中,请通过构建以下 Dockerfile 来创建新的 Docker 映像

FROM nginx:mainline-alpine
COPY ./config/* /etc/nginx/conf.d/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2020-11-10
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多