(原文http://blog.csdn.net/smallfish1983/article/details/40108999?utm_source=tuicool)php
LAMP 指的 Linux(操做系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和 PHP(有时也是指 Perl 或 Python) 的第一个字母,通常用来创建 web 服务器。 虽然这些开放源代码程序自己并非专门设计成同另几个程序一块儿工做的,但因为它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软 件)。当一块儿使用的时候,它们表现的像一个具备活力的解决方案包。下面介绍如何使用docker来搭建一个包含lamp组件的容器:html
官方的仓里没有标 OFFICIAL 的 lamp 的镜像,不过 「tutum」的镜像作的很是好,咱们能够直接 pull 他们的镜像来完成咱们的操做。mysql
core@localhost ~/base $ docker pull tutum/lamp
Pulling repository tutum/lamp
4b32789c7d66: Download complete ...
core@localhost ~/base $ docker run -d -p 8080:80 -p 3306:3306 tutum/lamp #启动应用并映射 8080 端口和 3306 端口 0ee00c97a5cdefb985baf826c16723f333aa5edddee4072a5107c724ad09f10d core@localhost ~/base $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ee00c97a5cd tutum/lamp:latest "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp, 0.0.0.0:8080->80/tcp lonely_davinci e3c136d76b44 tutum/tomcat:8.0 "/run.sh" 45 minutes ago Up 45 minutes 0.0.0.0:80->8080/tcp tomcat001 fe9e65aaf58c dl.dockerpool.com:5000/mysql:5.7 "/entrypoint.sh mysq 51 minutes ago Up 51 minutes 3306/tcp db001,tomcat001/tomysql core@localhost ~/base $ curl http://127.0.0.1:8080 #使用curl能够查看到默认的应用已经启动 <html> <head> <title>Hello world!</title> <style> body { background-color: white; text-align: center; padding: 50px; font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; } #logo { margin-bottom: 40px; } </style> </head> <body> <img id="logo" src="logo.png" /> <h1>Hello world!</h1> <h2>MySQL Server version: 5.5.38-0ubuntu0.14.04.1</h2> </body> </html>
默认的容器启动了一个 helloword 应用,咱们能够使用 dockerfile 建立另一个镜像来部署咱们本身的应用程序,dockerfile 的详细语法将在后面章节介绍。git
core@localhost ~ $ mkdir php
core@localhost ~ $ cd php/ core@localhost ~/php $ touch Dockerfile core@localhost ~/php $ vi Dockerfile core@localhost ~/php $ docker build -t dockerpool/my-lamp-app .
Dockerfile 内容以下:github
FROM tutum/lamp:latest RUN rm -fr /app && git clone https://github.com/username/customapp.git /app #这里替换 https://github.com/username/customapp.git 地址为你本身的项目地址 EXPOSE 80 3306 CMD ["/run.sh"]
再次启动本身的容器就完成部署了web
core@localhost ~/php $ docker stop 0ee 0ee core@localhost ~/php $ docker rm 0ee 0ee core@localhost ~/php $ docker run -d -p 8080:80 -p 3306:3306 dockerpool/my-lamp-app
使用 curl看下本身的应用程序是否是已经正确启动了吧!sql
curl http://localhost/
这个镜像的 mysql 数据库有个默认的 root 用户,本地链接时能够不用密码,因此在代码访问很是简单。docker
<?php $mysql = new mysqli("localhost", "root"); echo "MySQL Server info: ".$mysql->host_info; ?>
当咱们第一次以 tutum/lamp 镜像启动容器的时候,它会自动建立一个叫 admin 的 mysql 用户,并生成一个随机密码,使用「docker logs +容器ID」能够获取到这个密码。数据库
core@localhost ~/php $ docker logs 9cb => An empty or uninitialized MySQL volume is detected in /var/lib/mysql => Installing MySQL ... => Done! => Waiting for confirmation of MySQL service startup => Creating MySQL admin user with random password => Done! ======================================================================== You can now connect to this MySQL Server using: mysql -uadmin -p2Ijg6gvmM0N3 -h<host> -P<port> Please remember to change the above password as soon as possible! MySQL user 'root' has no password but only allows local connections ========================================================================
默认的 root 用户没法远程登录,因此要使用 admin 用户,它一样具备 root 权限。ubuntu