docker在docker机器内组成,无法安装音量

时间:2015-12-31 14:10:11

标签: django docker docker-compose docker-machine

我有简单的网站应用程序,使用Django,postgresql。我的小项目的结构如下所示:

.
├── docker-compose.yml
└── web
    ├── authentication
    ├── bower.json
    ├── Dockerfile
    ├── manage.py
    ├── requirements.txt
    ├── static
    └── trello_copy

当我只使用docker-compose进行构建时,一切正常。我创建了我的docker机器并连接到它们然后我使用与以前完全相同的命令:

docker-compose build
docker-compose up

原来,docker没有将我的web文件夹复制到web容器,他只是在代码中创建代码文件夹和web文件夹,但是web文件夹是空的。

搬运工-compose.yml

postgres:
  image: postgres
  volumes:
    - /var/docker/postgresql:/var/lib/postgresql/data
  ports:
    - "5432:5432"

web:
  build: ./web
  volumes:
    - ./web:/code
  ports:
    - "8000:8000"
  links:
    - postgresql:postgresql
  command: bash -c "python manage.py runserver 0.0.0.0:8000"

Dockerfile

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

我需要使用docker机器进行调试(PyCharm)。

更新

我找到了解决方案(仅适用于网络)。首先,您需要在VirtualBox中使用sharedfolder。

VBoxManage sharedfolder add <machine_name> --name <mount_name> --hostpath <host_path_to_folder_you_want_to_share>

然后你必须通过ssh连接到你的docker-machine vm主机并挂载这个文件夹。

mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <path_in_you_vm_machine>

所以现在您的主机文件夹已安装在您的虚拟机主机<path_in_you_vm_machine>上,但还有另一个问题。重新启动vm主机时,必须再次装入此文件夹。来自docs boot2docker docs

我们可以读到有一个脚本在vm主机启动时被执行。您必须将此命令放在vm主机上的此文件中

/mnt/var/lib/boot2docker/bootlocal.sh

例如:

mkdir -p <vm_path>
mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <vm_path>

这适用于我的web项目,但是当我使用相同的方法进行postgresql时,它不起作用,原因是mount文件夹的所有权不同于postgres(本例中为Docker),postgresql也无法启动。

我发现此问题在此处proposal machine share

0 个答案:

没有答案