(原文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