创建 docker 台机器,将 Web 根公开给主机
Create docker machine that exposes web root to host
我正在尝试使用 this 图像和 docker-machine 在 mac 上创建本地 magento 安装。我希望将 docker 图像的 /var/www
安装到我的 mac 的项目目录中(即在主机上我的主目录的子文件夹中)。
据我所知:
#docker-compose.yml
web:
image: alexcheng/magento
ports:
- "80:80"
links:
- mysql
env_file:
- env
volumes:
- /var/www:/var/www
mysql:
image: mysql:5.6.23
env_file:
- env
请注意,我在其中添加了一行,它应该将 docker 图像的 /var/www 暴露给主机(即虚拟 machine)。 env 文件包含各种环境变量以及 docker image page 使用的安装脚本。
然后我 运行 一些命令来创建 machine,添加共享卷,永久安装它,以及 运行 安装脚本
在
中创建机器和SSH
docker-machine create magento
eval (docker-machine env magento)
docker-machine stop magento
VBoxManage sharedfolder add magento-machine --name www --hostpath ~/web/magento-machine --automount
docker-machine start magento
docker-machine ssh magento
在 VM 上设置持久共享卷
mkdir -p /var/www
sudo mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` www /var/www
exit
回到主机,运行安装脚本
docker exec -it magentomachine_web_1 install-sampledata
docker exec -it magentomachine_web_1 install-magento
这可以将 magento machine 上的 /var/www
公开到我的项目目录。但是,这个文件夹不是docker的/var/www
而是machine的。真正的 htdocs 位于类似
的地方
/mnt/sda1/var/lib/docker/aufs/diff/1d17cf805c6925dead7d0fd1ba432d1b27f50a5a9240f585949aac6fad633790/var/www
我如何 运行 在 docker-mac 中显示此图像,同时将 /var/www 暴露给我的主机 mac 显示?
Docker 仅在容器启动后装载共享数据卷。我在创建此本地开发安装时遇到的问题是,在安装共享文件夹之前,我尝试在共享文件夹中执行 运行 命令。解决方案是将设置 Web 根目录的命令重新定位到 shell 脚本。
获取步骤总结运行宁:
首先,将 image repo 克隆到项目目录中。
docker-compose.yml
version: '2'
services:
web:
build: .
ports:
- "80:80"
links:
- mysql
env_file:
- env
volumes:
- './htdocs:/var/www/htdocs'
mysql:
image: mysql:5.6.23
env_file:
- env
volumes:
htdocs:
driver: local
Docker文件
FROM occitech/magento:php5.5-apache
ENV MAGENTO_VERSION 1.9.2.4
COPY ./bin/setup_magento.sh /usr/local/bin/setup_magento
COPY ./bin/install-magento /usr/local/bin/install-magento
COPY redis.conf /tmp/
COPY ./sampledata/magento-sample-data-1.9.1.0.tgz /opt/
COPY ./bin/install-sampledata-1.9 /usr/local/bin/install-sampledata
RUN chmod +x /usr/local/bin/setup_magento && \
chmod +x /usr/local/bin/install-magento && \
chmod +x /usr/local/bin/install-sampledata && \
apt-get update && apt-get install -y mysql-client-5.5 libxml2-dev && \
docker-php-ext-install soap
VOLUME /var/www/htdocs
bin/setup_magento.sh
#!/bin/bash
cd /tmp
curl https://codeload.github.com/OpenMage/magento-mirror/tar.gz/$MAGENTO_VERSION -o $MAGENTO_VERSION.tar.gz
tar xvf $MAGENTO_VERSION.tar.gz
mv magento-mirror-$MAGENTO_VERSION/* magento-mirror-$MAGENTO_VERSION/.htaccess /var/www/htdocs
chown -R daemon:daemon /var/www/htdocs
sed -i 's/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www\/htdocs/' /etc/apache2/sites-available/000-default.conf
sed -i 's/www-data/daemon/g' /etc/apache2/envvars
cd /var/www/htdocs
install-sampledata
install-magento
mv -f /tmp/redis.conf /var/www/htdocs/app/etc/redis.conf
创建机器
docker-machine create -d virtualbox magento
eval (docker-machine env magento)
使用 Virtualbox GUI(或在命令行上,在您停止机器后)在 /path/to/local/project/htdocs
创建一个名为 htdocs 的共享文件夹
启动机器并安装
docker-compose up -d
docker exec -it machine-name setup_magento
这里有一个小鱼脚本,它删除了机器的任何实例并从头开始做所有事情
function respawn
rm -rf ~/web/magento/htdocs/*
docker-machine rm magento -y
docker-machine create -d virtualbox magento
eval (docker-machine env magento)
set machine_ip (docker-machine ip magento)
echo "$machine_ip magento.dev" >> ~/Library/Gas\ Mask/Local/Docker\ Machines.hst
docker-compose up -d
docker exec -it web setup_magento
end
我正在尝试使用 this 图像和 docker-machine 在 mac 上创建本地 magento 安装。我希望将 docker 图像的 /var/www
安装到我的 mac 的项目目录中(即在主机上我的主目录的子文件夹中)。
据我所知:
#docker-compose.yml
web:
image: alexcheng/magento
ports:
- "80:80"
links:
- mysql
env_file:
- env
volumes:
- /var/www:/var/www
mysql:
image: mysql:5.6.23
env_file:
- env
请注意,我在其中添加了一行,它应该将 docker 图像的 /var/www 暴露给主机(即虚拟 machine)。 env 文件包含各种环境变量以及 docker image page 使用的安装脚本。
然后我 运行 一些命令来创建 machine,添加共享卷,永久安装它,以及 运行 安装脚本
在
中创建机器和SSHdocker-machine create magento
eval (docker-machine env magento)
docker-machine stop magento
VBoxManage sharedfolder add magento-machine --name www --hostpath ~/web/magento-machine --automount
docker-machine start magento
docker-machine ssh magento
在 VM 上设置持久共享卷
mkdir -p /var/www
sudo mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` www /var/www
exit
回到主机,运行安装脚本
docker exec -it magentomachine_web_1 install-sampledata
docker exec -it magentomachine_web_1 install-magento
这可以将 magento machine 上的 /var/www
公开到我的项目目录。但是,这个文件夹不是docker的/var/www
而是machine的。真正的 htdocs 位于类似
/mnt/sda1/var/lib/docker/aufs/diff/1d17cf805c6925dead7d0fd1ba432d1b27f50a5a9240f585949aac6fad633790/var/www
我如何 运行 在 docker-mac 中显示此图像,同时将 /var/www 暴露给我的主机 mac 显示?
Docker 仅在容器启动后装载共享数据卷。我在创建此本地开发安装时遇到的问题是,在安装共享文件夹之前,我尝试在共享文件夹中执行 运行 命令。解决方案是将设置 Web 根目录的命令重新定位到 shell 脚本。
获取步骤总结运行宁:
首先,将 image repo 克隆到项目目录中。
docker-compose.yml
version: '2'
services:
web:
build: .
ports:
- "80:80"
links:
- mysql
env_file:
- env
volumes:
- './htdocs:/var/www/htdocs'
mysql:
image: mysql:5.6.23
env_file:
- env
volumes:
htdocs:
driver: local
Docker文件
FROM occitech/magento:php5.5-apache
ENV MAGENTO_VERSION 1.9.2.4
COPY ./bin/setup_magento.sh /usr/local/bin/setup_magento
COPY ./bin/install-magento /usr/local/bin/install-magento
COPY redis.conf /tmp/
COPY ./sampledata/magento-sample-data-1.9.1.0.tgz /opt/
COPY ./bin/install-sampledata-1.9 /usr/local/bin/install-sampledata
RUN chmod +x /usr/local/bin/setup_magento && \
chmod +x /usr/local/bin/install-magento && \
chmod +x /usr/local/bin/install-sampledata && \
apt-get update && apt-get install -y mysql-client-5.5 libxml2-dev && \
docker-php-ext-install soap
VOLUME /var/www/htdocs
bin/setup_magento.sh
#!/bin/bash
cd /tmp
curl https://codeload.github.com/OpenMage/magento-mirror/tar.gz/$MAGENTO_VERSION -o $MAGENTO_VERSION.tar.gz
tar xvf $MAGENTO_VERSION.tar.gz
mv magento-mirror-$MAGENTO_VERSION/* magento-mirror-$MAGENTO_VERSION/.htaccess /var/www/htdocs
chown -R daemon:daemon /var/www/htdocs
sed -i 's/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www\/htdocs/' /etc/apache2/sites-available/000-default.conf
sed -i 's/www-data/daemon/g' /etc/apache2/envvars
cd /var/www/htdocs
install-sampledata
install-magento
mv -f /tmp/redis.conf /var/www/htdocs/app/etc/redis.conf
创建机器
docker-machine create -d virtualbox magento
eval (docker-machine env magento)
使用 Virtualbox GUI(或在命令行上,在您停止机器后)在 /path/to/local/project/htdocs
创建一个名为 htdocs 的共享文件夹启动机器并安装
docker-compose up -d
docker exec -it machine-name setup_magento
这里有一个小鱼脚本,它删除了机器的任何实例并从头开始做所有事情
function respawn
rm -rf ~/web/magento/htdocs/*
docker-machine rm magento -y
docker-machine create -d virtualbox magento
eval (docker-machine env magento)
set machine_ip (docker-machine ip magento)
echo "$machine_ip magento.dev" >> ~/Library/Gas\ Mask/Local/Docker\ Machines.hst
docker-compose up -d
docker exec -it web setup_magento
end