﹎斑斓的梦ぷ

愿你眼中总有光芒,活成你想要的模样.

导航

Docker-LAMP开发环境

1.选择镜像

我选择了start 比较多的一个linode/lamp

docker search lamp

$ docker search lamp
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
linode/lamp                            LAMP on Ubuntu 14.04.1 LTS Container            110
...

2.下载镜像

docker pull linode/lamp

3.启动Ubuntu镜像

sudo docker run -p 80:80 -p 3306:3306 -v /your/path/www:/var/www -v /your/path/apache2.conf:/etc/apache2/apache2.conf -v /your/path/my.cnf:/etc/mysql/my.cnf -t -i linode/lamp /bin/bash

#解释:
docker run:运行一个container,如果后面要绑定宿主主机的0-1024端口需要使用sudo
-p port1:port2: 将宿主机的端口port1映射到容器中的port2
-v file1:file2: 将宿主机的文件\路径挂载到容器中的文件\路径
-t -i linode/lamp /bin/bash:使用linode/lamp生成容器,并打开shell

4.修改镜像

apt-get update 

apt-get install vim

apt-get install libapache2-mod-php5 php5 php5-gd php5-mysql

更新源列表,安装vim方便编辑,因为镜像默认已经安装好了apache,php,mysql还需要几个扩展。

5.保存镜像

docker ps #找到刚才操作的容器

docker commit 容器ID   mylamp:mysqli-vim

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED                  SIZE
mylamp              mysqli-vim          ee713a48dbef        Less than a second ago   473MB
linode/lamp         mysqli              5fc7b9d4207d        5 hours ago              430MB
linode/lamp         latest              2359fa12fded        2 years ago              372MB

5.物理机映射

为了方便管理配置以及项目我的目录如下:

www目录下存放项目代码,外层是apache配置,mysql配置等等。apache2.conf可以copy一份放到这里,下面是我的一个vhost。

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/example.com/public_html
        ServerName admin.xxxx.com

        <Directory "/var/www/example.com/public_html">
                Options  FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
                DirectoryIndex index.html index.php
                
               # RewriteEngine off
               # RewriteCond %{REQUEST_URI} !^(/index\.php|/static/|/app/|/upload/|/robots\.txt)
               # RewriteRule ^(.*)$ /index.php/$1 [L]
                
                RewriteEngine On
                RewriteBase /
                RewriteRule ^index\.php$ - [L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule . /index.php [L]
        </Directory>

          ErrorLog  /var/www/example.com/log/error.log
          CustomLog /var/www/example.com/log/access.log combined
</VirtualHost>

6.启动

docker run -p 80:80 -v /Users/zhen/www-root/work/:/var/www/ -v /Users/zhen/docker/lamp/sites-available:/etc/apache2/sites-available -v /Users/zhen/docker/lamp/log:/var/log/apache2 -v /Users/zhen/docker/lamp/sites-enabled:/etc/apache2/sites-enabled/ -t -i 你的镜像ID /bin/bash

由于我不需要本地mysql就没有做mysql映射配置。由于我还没看如何启动容器,服务自动启动还需要进入容器手动加载。

7.启动apache的rewrite

#使vhost生效 如果你跟我一样映射了site-enabled目录无需该步(手动添加vhost)
#sudo a2ensite xxxx.conf

sudo a2enmod rewrite

service apache2 restart

8.添加物理机hosts

绑定hosts,没什么好说的。

9.访问物理机地址

访问绑定的hosts的虚拟地址。

posted on 2018-05-24 17:33  ﹎斑斓的梦ぷ  阅读(926)  评论(0编辑  收藏  举报