我已经在我的Ubuntu 14.04 LTS主机上使用本地VirtualBox提供程序(其中包含boot2docker)一段时间来开发,现在我使用docker-compose。
最近我决定尝试使用docker-machine(因为它与Pycharm集成),但我遇到了一些问题,例如当我保存一些新代码时,docker容器不再自动更新,我认为这是因为我在我的docker-compose.yml
web服务中注释掉了我的卷,但如果我不这样做,我会得到一个manage.py not found
错误,所以我在这里理解应该将其注释掉,根据 这里的解释。
我已经在网上阅读了很多内容,想知道是否有一个好的简单方法让docker-machine在Ubuntu上与docker-compose协同工作。
DockerFile
FROM ubuntu:14.04.3
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -y \
build-essential \
git-core \
python2.7 \
python-pip \
python-dev \
libpq-dev \
postgresql-client-9.3 \
libjpeg-dev \
binutils \
libproj-dev \
gdal-bin
RUN mkdir /vagrant
WORKDIR /vagrant
RUN mkdir requirements
COPY requirements requirements
RUN pip install -r requirements/local.txt
COPY . /vagrant/
docker-compose.yml
postgis:
image: mdillon/postgis:9.3
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "postgres"
# volumes:
# - /etc/postgresql
# - /var/log/postgresql
# - /var/lib/postgresql
web:
build: .
dockerfile: Dockerfile
command: python manage.py runserver 0.0.0.0:8000 --settings=xxx.settings.local
# https://dev59.com/-Y3da4cB1Zd3GeqPxkj0#31567743
# volumes:
# - .:/vagrant
ports:
- "8000:8000"
links:
- "postgis:postgis"
更新:
当我在我的虚拟机内运行mount
命令时,我得到以下输出:
tmpfs on / type tmpfs (rw,relatime,size=918096k)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,data=ordered)
cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,mode=755)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,relatime,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,relatime,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,relatime,hugetlb)
/dev/sda1 on /mnt/sda1/var/lib/docker/aufs type ext4 (rw,relatime,data=ordered)
none on /mnt/sda1/var/lib/docker/aufs/mnt/137fb1ad9a432a3f4fa47667ecc9991c10149b71f02dfc06a8134fc348532a3d type aufs (rw,relatime,si=462e07a762a4065f,dio,dirperm1)
shm on /mnt/sda1/var/lib/docker/containers/137fb1ad9a432a3f4fa47667ecc9991c10149b71f02dfc06a8134fc348532a3d/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
mqueue on /mnt/sda1/var/lib/docker/containers/137fb1ad9a432a3f4fa47667ecc9991c10149b71f02dfc06a8134fc348532a3d/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
nsfs on /var/run/docker/netns/2e4dbeed7a66 type nsfs (rw)
我的共享文件夹在用户界面中显示的文件夹路径是/home
docker-machine ssh <name>
) 并获取挂载(mount
),看看主机中是否有任何内容被挂载在VM上?如果没有,则无法使用VM实现此目的。你需要以某种方式与VM共享主机文件夹,以使容器能够访问它。 - Andy Shinn/home
挂载点。这就是为什么从主机挂载到容器中的任何内容都无法被挂载的原因。您正在尝试使用主机-> VM->容器方法。目前只挂载了VM->容器,而VM没有这些文件(项目根目录)。这听起来有道理吗?不幸的是,我并不真正知道如何解决或排除问题,因为我还没有在Linux工作站上足够地使用boot2docker或docker-machine。/home
文件夹可能需要一个新的问题。 - Andy Shinndocker-compose run web bash
进入容器并在其中运行命令吗?ls -la
命令的输出是什么样子的? - schmunk