Docker 搭建lamp應(yīng)用實(shí)例詳解
Docker 搭建lamp應(yīng)用
LAMP 指的 Linux(操作系統(tǒng))、ApacheHTTP 服務(wù)器,MySQL(有時(shí)也指MariaDB,數(shù)據(jù)庫(kù)軟件) 和 PHP(有時(shí)也是指 Perl 或 Python) 的第一個(gè)字母,一般用來(lái)建立 web 服務(wù)器。 雖然這些開(kāi)放源代碼程序本身并不是專門設(shè)計(jì)成同另幾個(gè)程序一起工作的,但由于它們的免費(fèi)和開(kāi)源,這個(gè)組合開(kāi)始流行(大多數(shù)Linux發(fā)行版本捆綁了這些軟件)。當(dāng)一起使用的時(shí)候,它們表現(xiàn)的像一個(gè)具有活力的解決方案包。下面介紹如何使用Docker來(lái)搭建一個(gè)包含lamp組件的容器:
從網(wǎng)站上 pull 一個(gè) lamp 鏡像
官方的倉(cāng)里沒(méi)有標(biāo) OFFICIAL 的 lamp 的鏡像,不過(guò) 「tutum」的鏡像做的非常好,我們可以直接 pull 他們的鏡像來(lái)完成我們的操作。
core@localhost ~/base $ docker pull tutum/lamp Pulling repository tutum/lamp 4b32789c7d66: Download complete ...
使用默認(rèn)方式啟動(dòng) lamp 容器
core@localhost ~/base $ docker run -d -p 8080:80 -p 3306:3306 tutum/lamp
#啟動(dòng)應(yīng)用并映射 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可以查看到默認(rèn)的應(yīng)用已經(jīng)啟動(dòng)
<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>
部署自己的 PHP 應(yīng)用
默認(rèn)的容器啟動(dòng)了一個(gè) helloword 應(yīng)用,我們可以使用 dockerfile 創(chuàng)建另外一個(gè)鏡像來(lái)部署我們自己的應(yīng)用程序,dockerfile 的詳細(xì)語(yǔ)法將在后面章節(jié)介紹。
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 內(nèi)容如下:
FROM tutum/lamp:latest RUN rm -fr /app && git clone https://github.com/username/customapp.git /app #這里替換 https://github.com/username/customapp.git 地址為你自己的項(xiàng)目地址 EXPOSE 80 3306 CMD ["/run.sh"]
再次啟動(dòng)自己的容器就完成部署了
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看下自己的應(yīng)用程序是不是已經(jīng)正確啟動(dòng)了吧!
curl http://localhost/
在 php 程序中連接數(shù)據(jù)庫(kù)
在容器中訪問(wèn) mysql 數(shù)據(jù)庫(kù)
這個(gè)鏡像的 mysql 數(shù)據(jù)庫(kù)有個(gè)默認(rèn)的 root 用戶,本地連接時(shí)可以不用密碼,所以在代碼訪問(wèn)非常簡(jiǎn)單。
<?php
$mysql = new mysqli("localhost", "root");
echo "MySQL Server info: ".$mysql->host_info;
?>
在容器外部訪問(wèn) mysql 數(shù)據(jù)庫(kù)
當(dāng)我們第一次以 tutum/lamp 鏡像啟動(dòng)容器的時(shí)候,它會(huì)自動(dòng)創(chuàng)建一個(gè)叫 admin 的 mysql 用戶,并生成一個(gè)隨機(jī)密碼,使用「docker logs +容器ID」可以獲取到這個(gè)密碼。
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 ========================================================================
默認(rèn)的 root 用戶無(wú)法遠(yuǎn)程登陸,所以要使用 admin 用戶,它同樣具有 root 權(quán)限。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
docker容器內(nèi)安裝TensorRT的問(wèn)題
很多朋友在使用docker容器內(nèi)安裝TensorRT的時(shí)候,遇到一大堆棘手的問(wèn)題,不知道怎么處理好了,今天小編就docker安裝TensorRT的問(wèn)題給大家詳細(xì)介紹下,感興趣的朋友一起看看吧2021-05-05
docker搭建lnmp環(huán)境的實(shí)現(xiàn)步驟
DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一鍵安裝程序,本文就來(lái)介紹一下docker搭建lnmp環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
使用Docker開(kāi)發(fā)python Web 應(yīng)用
本文給大家詳細(xì)講解了如何使用Docker開(kāi)發(fā)python應(yīng)用,特別是WEB應(yīng)用的步驟,Docker本質(zhì)上提供了非常輕量化的VMs,我們可以使用其創(chuàng)建一個(gè)高標(biāo)準(zhǔn)隔離并能大大減少失配的開(kāi)發(fā)和產(chǎn)品環(huán)境。2016-10-10
docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn)
本文主要介紹了docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
使用docker安裝hadoop的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了使用docker安裝hadoop的詳細(xì)過(guò)程,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
私有云存儲(chǔ)Minio Docker鏡像無(wú)法啟動(dòng),提示:Adding local Minio
使用Minio在本地搭建私有云存儲(chǔ)時(shí)出現(xiàn)無(wú)法啟動(dòng),查看日志頻繁輸出“Adding local Minio host to 'mc' configuration...”,然后停止了,本文給大家分享私有云存儲(chǔ)Minio Docker鏡像無(wú)法啟動(dòng),提示:Adding local Minio host to 'mc' configuration,感興趣的朋友一起看看吧2023-11-11

