docker搭建LAMP环境

通过《一步一步安装docker》安装好docker环境,下面利用docker来搭建LAMP环境。
tutumcloud/lamp是一个很不错的镜像,我们以此为基础来进行搭建。

1、下载tutumcloud/lamp镜像

下载地址:https://github.com/tutumcloud/lamp/tree/master

进入linux服务器,输入命令:

wget https://github.com/tutumcloud/lamp/archive/master.zip

 

2、解压

unzip master.zip

 

3、进入解压后的目录

cd lamp-master

 

4、修改Dockferile

该镜像基于ubuntu,由于远程下载国外的ubuntu镜像很慢,建议改为国内的镜像。

vi Dockerfile

 

将第一行改为:

FROM daocloud.io/ubuntu:trusty

 

同时修改apt-get的源,改为国内的镜像,提高下载速度:
在第三行插入:


RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

然后添加安装php5-gd,php5-curl等扩展
在第7行php5-mcrypt后面添加即可。
修改后的完整Dockerfile文件内容如下:


FROM daocloud.io/ubuntu:trusty
MAINTAINER Fernando Mayo <fernando@tutum.co>, Feng Honglin <hfeng@tutum.co>

RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# Install packages
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
  apt-get -y install supervisor git apache2 libapache2-mod-php5 mysql-server php5-mysql pwgen php-apc php5-mcrypt curl php5-curl php5-gd && \
  echo "ServerName localhost" >> /etc/apache2/apache2.conf

# Add image configuration and scripts
ADD start-apache2.sh /start-apache2.sh
ADD start-mysqld.sh /start-mysqld.sh
ADD run.sh /run.sh
RUN chmod 755 /*.sh
ADD my.cnf /etc/mysql/conf.d/my.cnf
ADD supervisord-apache2.conf /etc/supervisor/conf.d/supervisord-apache2.conf
ADD supervisord-mysqld.conf /etc/supervisor/conf.d/supervisord-mysqld.conf

# Remove pre-installed database
RUN rm -rf /var/lib/mysql/*

# Add MySQL utils
ADD create_mysql_admin_user.sh /create_mysql_admin_user.sh
RUN chmod 755 /*.sh

# config to enable .htaccess
ADD apache_default /etc/apache2/sites-available/000-default.conf
RUN a2enmod rewrite

# Configure /app folder with sample app
RUN git clone https://github.com/fermayo/hello-world-lamp.git /app
RUN mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html

#Environment variables to configure php
ENV PHP_UPLOAD_MAX_FILESIZE 10M
ENV PHP_POST_MAX_SIZE 10M

# Add volumes for MySQL 
VOLUME  ["/etc/mysql", "/var/lib/mysql" ]

EXPOSE 80 3306
CMD ["/run.sh"]

5、构建自己的镜像

docker build -t tutum/lamp .

tutum/lamp为镜像的名字,可以改为其他的

运行后,会自动去下载相关依赖,如果一次未下载成功多运行上面的命令几次。

6、运行一个新容器。后台运行(-d)、并暴露端口(-p)

docker run -d -p 80:80 -p 3306:3306 tutum/lamp

 

运行后会生成一个新的容器,通过docker ps可以查看
QQ截图20170604152308

7、以后,如果只是启动已存在的容器,只需要运行:

docker start 容器ID(一般只需要输入容器ID前三位即可,一般不会重复)

 

关闭容器则运行:

docker stop 容器ID

8、在浏览器里输入ip查看效果,例如我是安装在虚拟机里的,则先通过ifconfig查到ip后,在真机上输入虚拟机的ip

显示以下界面则说明环境搭建成功:

tutum

9、容器第一次运行时,会自动创建一个名为admin的MySQL账户,密码为随机生成,这个账户可以外部远程连接该容器内的数据库。root账户密码默认为空,只能允许容器内部连接。获取admin账户的密码可以通过查看日志来获得:

docker logs 容器ID

mysqlinfo

 

10、如果需要修改admin账户的密码,可以使用如下命令来启动容器:

docker run -d -p 80:80 -p 3306:3306 -e MYSQL_PASS="mypass" tutum/lamp

11、如何登录到docker的镜像系统中?

只需输入以下命令:

docker run -t -i tutum/lamp /bin/bash

docker1

运行该命令后,可以看到root所在的位置发生了变化,此时,你以身在虚拟系统中了。

此时输入的命令都只影响虚拟系统。但即使改变了虚拟系统中的内容,只要退出了容器,下次启动的时候,又是全新的,并不会保存之前的内容。

参考:https://github.com/yiwang6/lamp(来自于阿里云镜像仓库:https://cr.console.aliyun.com/?spm=5176.100239.blogcont29941.13.yEqM6d#/imageDesc/28204/detail)

发表评论

邮箱地址不会被公开。 必填项已用*标注