【问题标题】:Docker: how to mount local folder inside container?Docker:如何在容器内挂载本地文件夹?
【发布时间】:2020-01-02 23:21:27
【问题描述】:

我需要从我的 OSX 机器上与一个正在运行的 Docker 容器共享一个文件夹,但我找不到如何去做。 这是一个有效的 Docker-compose 文件:

version: '2'
services:
mariadb:
  image: 'bitnami/mariadb:10.3'
  environment:
    - MARIADB_ROOT_PASSWORD=bitnami
    - MARIADB_USER=bn_moodle
    - MARIADB_DATABASE=bitnami_moodle
    - ALLOW_EMPTY_PASSWORD=yes
  volumes:
    - 'mariadb_data:/bitnami'
phpmyadmin:
  image: 'bitnami/phpmyadmin:4'
  ports:
    - '8081:80'
    - '4430:443'
  depends_on:
    - mariadb
  volumes:
    - 'phpmyadmin_data:/bitnami'
moodle:
  image: 'bitnami/moodle:3'
  environment:
    - MARIADB_HOST=mariadb
    - MARIADB_PORT_NUMBER=3306
    - MOODLE_DATABASE_USER=bn_moodle
    - MOODLE_DATABASE_NAME=bitnami_moodle
    - ALLOW_EMPTY_PASSWORD=yes
  ports:
    - '80:80'
    - '443:443'
  volumes:
    - 'moodle_data:/bitnami'
  depends_on:
    - mariadb
volumes:
  mariadb_data:
    driver: local
  phpmyadmin_data:
    driver: local
  moodle_data:
    driver: local

此文件正确启动 3 个 Docker 容器,1 个用于 Moodle,1 个用于 MariaDb,1 个用于 Phpmyadmin。

我现在需要做的是与 Moodle 容器内的文件夹共享本地文件夹的内容。但我不知道如何更改 Volumes 键以反映这一点。我尝试使用如下映射:

moodle_data:
- moodle_data:/Users/macbook/Code/Php/moodle-docker/moodle/Users/macbook/Code/Php/moodle-docker/moodle

但它不起作用..我在这里做错了什么?提前感谢任何可以提供帮助的人!

【问题讨论】:

  • 嗨 Giulio,这是正确的 /Users/macbook/Code/Php/moodle-docker/moodle/Users/macbook/Code/Php/moodle-docker/moodle 吗?应该是/Users/macbook/Code/Php/moodle-docker/moodle/吧?
  • 因此,您要映射的 Moodle 容器 INSIDE 目录是什么?
  • 嗨罗伯托,对不起,我抄错了那行,它应该是 'Users/macbook/Code/Php/moodle-docker/moodle/'
  • 基本上我需要能够在我的本地机器上的'Users/macbook/Code/Php/moodle-docker/moodle/'中编写一些代码,并在容器内实时传输' :bitnami/moodle/blocks/gatto'。我尝试了很多组合,但没有一个奏效
  • 太好了,我将发布一个示例作为答案,我们可以进一步讨论。

标签: docker docker-compose volumes


【解决方案1】:

您需要使用 host_folder:container_folder 将 host_folder 与 container_folder 映射。如 cmets 所述:

moodle:
  image: 'bitnami/moodle:3'
  environment:
    - MARIADB_HOST=mariadb
    - MARIADB_PORT_NUMBER=3306
    - MOODLE_DATABASE_USER=bn_moodle
    - MOODLE_DATABASE_NAME=bitnami_moodle
    - ALLOW_EMPTY_PASSWORD=yes
  ports:
    - '80:80'
    - '443:443'
  volumes: 
    - /Users/macbook/Code/Php/moodle-docker/moodle:/bitnami/gatto
    - moodle_data:/bitnami
  depends_on:
    - mariadb

记住:你在 host_folder 上的文件夹必须可以被 docker daemon 访问

【讨论】:

  • 嗨罗伯托,我已经尝试过这个解决方案......但是在 'docker-compose up -d' 之后,容器上升,停留几秒钟并立即关闭。
  • 我已将 777 修改为我的 /Users/macbook/Code/Php/moodle-docker/moodle 文件夹
  • 你能做一个 docker logs 吗?也许我们能找到一些东西
  • 哦,/Users/macbook/Code/Php/moodle-docker/moodle 是 mac 中的完整目录吗?就像 cd /Users/macbook/Code/Php/moodle-docker/moodle 需要工作。
  • 是的,它是完整的路径。如果我搜索容器的日志,我会收到一个应用程序错误:“默认异常处理程序:插件“block/gatto”有缺陷或过时,无法继续,抱歉。调试:缺少 version.php 文件”。这似乎与 Moodle 相关,所以 Docker 不是问题..... mmm
猜你喜欢
  • 2016-09-18
  • 1970-01-01
  • 2021-03-28
  • 2019-07-20
  • 2018-05-19
  • 2021-11-21
  • 1970-01-01
  • 2020-11-17
相关资源
最近更新 更多