1. 程式人生 > >利用docker搭建LAMP執行環境教程詳解

利用docker搭建LAMP執行環境教程詳解

 

LAMP相信對大家來說都不陌生, Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器,所以這篇文章給大家介紹利用docker快速搭建LAMP執行環境的方法,有需要的朋友們可以參考借鑑,下面來一起看看吧。

LAMP介紹

LAMP 指的 Linux(作業系統)、ApacheHTTP 伺服器,MySQL(有時也指MariaDB,資料庫軟體) 和 PHP(有時也是指 Perl 或 Python) 的第一個字母,一般用來建立 web 伺服器。 雖然這些開放原始碼程式本身並不是專門設計成同另幾個程式一起工作的,但由於它們的免費和開源,這個組合開始流行(大多數Linux發行版本***了這些軟體)。當一起使用的時候,它們表現的像一個具有活力的解決方案包。

下面介紹如何使用docker來搭建一個包含lamp元件的容器:

從網站上 pull 一個 lamp 映象

官方的倉裡沒有標 OFFICIAL 的 lamp 的映象,不過 「tutum」的映象做的非常好,我們可以直接 pull 他們的映象來完成我們的操作。

"lang-bash">[email protected] ~/base $ docker pull tutum/lamp
Pulling repository tutum/lamp
b32789c7d66: Download complete
...

使用預設方式啟動 lamp 容器

"lang-bash">
[email protected]
~/base $ docker run "hljs-operator">-d -p : -p : tutum/lamp ee00c97a5cdefb985baf826c16723f333aa5edddee4072a5107c724ad09f10d [email protected] ~/base $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ee00c97a5 "hljs-built_in">cd tutum/lamp:latest "/run.sh" seconds ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp lonely_davinci e3c136d76b44 tutum/tomcat: "hljs-number">8.0 "hljs-string">"/run.sh" minutes ago Up minutes "hljs-number">0.0. "hljs-number">0.0:->/tcp tomcat001 fe9e65aaf58c dl.dockerpool.com:/mysql: "hljs-number">5.7 "hljs-string">"/entrypoint.sh mysq 51 minutes ago Up 51 minutes 3306/tcp db001,tomcat001/tomysql
[email protected]
~/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 "hljs-string">","Helvetica Neue "hljs-string">",Helvetica,Arial,sans-serif;
    }

    #logo {
        margin-bottom: 40px;
    }
    </style>
</head>
<body>
    <img id="logo "hljs-string">" src="http://upload.server110.com/image/20141116/205R55010-0.png" />
    <h1>Hello world!</h1>
            <h2>MySQL Server version: 5.5.38-0ubuntu0.14.04.1</h2>
    </body>
</html>

部署自己的 PHP 應用

預設的容器啟動了一個 helloword 應用,我們可以使用 dockerfile 建立另外一個映象來部署我們自己的應用程式,dockerfile 的詳細語法將在後面章節介紹。

[email protected] ~ $ mkdir php
[email protected] ~ $ cd php/
[email protected] ~/php $ touch Dockerfile
[email protected] ~/php $ vi Dockerfile
[email protected] ~/php $ docker build -t dockerpool/my-lamp-app .

Dockerfile 內容如下:

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"]

再次啟動自己的容器就完成部署了

"lang-bash">[email protected] ~/php $ docker stop  ee
ee
[email protected] ~/php $ docker rm ee
ee
[email protected] ~/php $ docker run "hljs-operator">-d -p : -p : dockerpool/my-lamp-app

使用 curl看下自己的應用程式是不是已經正確啟動了吧!

curl http://localhost/

在 php 程式中連線資料庫 在容器中訪問 mysql 資料庫

這個映象的 mysql 資料庫有個預設的 root 使用者,本地連線時可以不用密碼,所以在程式碼訪問非常簡單。

"hljs-preprocessor"><?php
$mysql = "hljs-keyword">new mysqli( "hljs-string">"localhost", "hljs-string">"root");
echo "hljs-string">"MySQL Server info: ". "hljs-variable">$mysql "hljs-variable">->host_info;
?>

在容器外部訪問 mysql 資料庫

當我們第一次以 tutum/lamp 映象啟動容器的時候,它會自動建立一個叫 admin 的 mysql 使用者,並生成一個隨機密碼,使用「docker logs +容器ID」可以獲取到這個密碼。

"lang-bash">[email protected] ~/php $ docker logs cb
=> An empty or uninitialized MySQL volume is detected in /var/lib/mysql
=> Installing MySQL ...
=> Done!
=> Waiting "hljs-keyword">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 "hljs-string">'root' has no password but only allows local connections
========================================================================

預設的 root 使用者無法遠端登陸,所以要使用 admin 使用者,它同樣具有 root 許可權。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家用docker搭建LAMP能有所幫助,如果有疑問大家可以留言交流。