利用docker搭建LAMP運(yùn)行環(huán)境教程詳解
LAMP介紹
LAMP 指的 Linux(操作系統(tǒng))、ApacheHTTP 服務(wù)器,MySQL(有時(shí)也指MariaDB,數(shù)據(jù)庫軟件) 和 PHP(有時(shí)也是指 Perl 或 Python) 的第一個(gè)字母,一般用來建立 web 服務(wù)器。 雖然這些開放源代碼程序本身并不是專門設(shè)計(jì)成同另幾個(gè)程序一起工作的,但由于它們的免費(fèi)和開源,這個(gè)組合開始流行(大多數(shù)Linux發(fā)行版本***了這些軟件)。當(dāng)一起使用的時(shí)候,它們表現(xiàn)的像一個(gè)具有活力的解決方案包。
下面介紹如何使用docker來搭建一個(gè)包含lamp組件的容器:
從網(wǎng)站上 pull 一個(gè) lamp 鏡像
官方的倉里沒有標(biāo) OFFICIAL 的 lamp 的鏡像,不過 「tutum」的鏡像做的非常好,我們可以直接 pull 他們的鏡像來完成我們的操作。
"lang-bash">core@localhost ~/base $ docker pull tutum/lamp Pulling repository tutum/lamp b32789c7d66: Download complete ...
使用默認(rèn)方式啟動(dòng) lamp 容器
"lang-bash">core@localhost ~/base $ docker run "hljs-operator">-d -p : -p : tutum/lamp ee00c97a5cdefb985baf826c16723f333aa5edddee4072a5107c724ad09f10d core@localhost ~/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 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 "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 應(yīng)用
默認(rèn)的容器啟動(dòng)了一個(gè) helloword 應(yīng)用,我們可以使用 dockerfile 創(chuàng)建另外一個(gè)鏡像來部署我們自己的應(yīng)用程序,dockerfile 的詳細(xì)語法將在后面章節(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)自己的容器就完成部署了
"lang-bash">core@localhost ~/php $ docker stop ee ee core@localhost ~/php $ docker rm ee ee core@localhost ~/php $ docker run "hljs-operator">-d -p : -p : dockerpool/my-lamp-app
使用 curl看下自己的應(yīng)用程序是不是已經(jīng)正確啟動(dòng)了吧!
curl http://localhost/
在 php 程序中連接數(shù)據(jù)庫 在容器中訪問 mysql 數(shù)據(jù)庫
這個(gè)鏡像的 mysql 數(shù)據(jù)庫有個(gè)默認(rèn)的 root 用戶,本地連接時(shí)可以不用密碼,所以在代碼訪問非常簡(jiǎn)單。
"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 數(shù)據(jù)庫
當(dāng)我們第一次以 tutum/lamp 鏡像啟動(dòng)容器的時(shí)候,它會(huì)自動(dòng)創(chuàng)建一個(gè)叫 admin 的 mysql 用戶,并生成一個(gè)隨機(jī)密碼,使用「docker logs +容器ID」可以獲取到這個(gè)密碼。
"lang-bash">core@localhost ~/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 ========================================================================
默認(rèn)的 root 用戶無法遠(yuǎn)程登陸,所以要使用 admin 用戶,它同樣具有 root 權(quán)限。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家用docker搭建LAMP能有所幫助,如果有疑問大家可以留言交流。
- GitBook 制作電子書詳細(xì)教程
- 利用docker搭建php7和nginx運(yùn)行環(huán)境全過程(官方鏡像)
- Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法
- 使用Docker搭建Java環(huán)境的步驟方法
- Docker搭建自己的本地鏡像倉庫的步驟
- Docker 1分鐘搭建DNS服務(wù)器的方法
- 搭建基于Docker的PHP開發(fā)環(huán)境的詳細(xì)教程
- Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress實(shí)踐
- Docker搭建本地私有倉庫的詳細(xì)步驟
- 使用Docker快速搭建你的Gitbook
相關(guān)文章
詳解如何修改 Docker 默認(rèn)網(wǎng)橋地址
這篇文章主要介紹了詳解如何修改 Docker 默認(rèn)網(wǎng)橋地址,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Docker內(nèi)如何訪問本機(jī)(宿主機(jī))的具體方法
這篇文章主要介紹了Docker內(nèi)如何訪問本機(jī)(宿主機(jī))的具體方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10.NET?6?從0到1使用Docker部署至Linux環(huán)境超詳細(xì)教程
這篇文章主要介紹了.NET?6?從0到1使用Docker部署至Linux環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05創(chuàng)建Web項(xiàng)目的Docker鏡像實(shí)例講解
這篇文章主要介紹了創(chuàng)建Web項(xiàng)目的Docker鏡像實(shí)例講解的相關(guān)資料,需要的朋友可以參考下2016-10-10docker 啟動(dòng)具有多個(gè)網(wǎng)絡(luò)接口的容器的方法示例
這篇文章主要介紹了docker 啟動(dòng)具有多個(gè)網(wǎng)絡(luò)接口的容器的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10