Docker搭建LNMP環境

2021-08-26 05:58:48 字數 3714 閱讀 2076

關於什麼是docker,建議大家先上網查查有關的用法。如果您不了解,在這篇文章中,您可以簡單的理解為他是乙個輕量級的虛擬機器。

一、docker安裝mysql

首先,我們從倉庫拉取乙個mysql的映象

docker pull mysql:5.6
然後我們可以通過命令 docker images 檢視我們剛剛拉下來的mysql的映象

接下來,我們就開始執行並啟動乙個容器,通過以下命令

docker run -d -p 3307:3306 -e mysql_root_password=xy123456 --name xy_mysql mysql:5.6
引數說明-d 讓容器在後台執行 

-p 新增主機到容器的埠對映 

-e 設定環境變數,這裡是設定mysql的root使用者的初始密碼,這個必須設定 

–name 容器的名字,隨便取,但是必須唯一

ps:其實我們可以僅僅使用docker run命令就行了。docker run會先去pull,然後再create。個人習慣先把映象pull下來,在run的時候會很快。

接下來我們就可以通過命令docker ps -a 檢視我們剛剛建立的容器

這裡我們可以看到我的容器狀態的up狀態,表示容器正在執行,並且把可以看到主機和容器的埠對映關係。

接下來,我們就可以進入到我們剛剛建立的容器中,輸入命令

docker exec -ti xy_mysql /bin/bash
引數說明-t 在容器裡生產乙個偽終端 

-i 對容器內的標準輸入 (stdin) 進行互動

容器中預設是沒有vim的,所以我們首先要安裝vim,需要注意的是安裝前記得先執行apt update命令,不然安裝會出現問題。 

進入到mysql容器後,我們通過建立乙個遠端可以訪問的使用者,這樣我們就能從別的主機訪問到我們的資料庫了。

二、docker安裝php-fpm

同樣首先我們拉取php-fpm的映象

docker pull php:7.0-fpm
再建立乙個phpfpm容器

docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link xy_mysql:mysql --name xy_phpfpm php:7.0-fpm
引數說明-d 讓容器在後台執行 

-p 新增主機到容器的埠對映 

-v 新增目錄對映,即主機上的/var/nginx/www/html和容器中/var/www/html目錄是同步的 

–name 容器的名字 

–link 與另外乙個容器建立起聯絡,這樣我們就可以在當前容器中去使用另乙個容器裡的服務。

這裡如果不指定–link引數其實也是可以得,因為容易本身也是有ip的且唯一,所以我們也可以直接利用ip去訪問容器。

然後進入到我們的容器,然後我們在/var/www/html目錄下新建乙個index.php檔案

touch index.php
我們可以看到該目錄下新建了乙個php檔案 

接下來我們回到我們的主機上面,訪問一下我們主機上/var/nginx/www/html 

我們發現我們在容器裡的/var/www/html目錄中新建的檔案也在主機的/var/nginx/www/html目錄中,因為在建立容器的時候,我們已經把主機中的目錄掛載到了容器中去了。

因為後面我要使用pdo模組進行測試,所以我需要自己安裝pdo_mysql模組,在docker容器中可以這樣來安裝

docker-php-ext-install pdo_mysql
然後我們可以通過命令php -m檢視我們的php的所有擴充套件模組,我們可以去看到我們剛剛安裝的pdo_mysql擴充套件也在裡面 

三、docker安裝nginx

首先,我們從倉庫裡去拉取乙個nginx映象

docker pull ngixn:1.10.3
接下來執行nginx容器

docker run -d -p 80:80 --name xy_nginx\ 

-v /var/nginx/www/html:/var/www/html\

--link xy_phpfpm:phpfpm --name xy_nginx nginx:1.10.3

引數說明:-d 讓容器在後台執行 

-p 新增主機到容器的埠對映 

-v 新增目錄對映,這裡最好nginx容器的根目錄最好寫成和php容器中根目錄一樣。但是不一點非要一模一樣,如果不一樣在配置nginx的時候需要注意 

–name 容器的名字 

–link 與另外乙個容器建立起聯絡

然後進入nginx容器,修改nginx的配置檔案讓它支援php

docker exec -ti xy_nginx /bin/bash
引數說明-t 在容器裡生產乙個偽終端 

-i 對容器內的標準輸入 (stdin) 進行互動

在容器裡找到nginx的配置檔案,預設是在/etc/nginx目錄下

location ~ \.php$
最後,我們來測試一下我們的安裝是否成功

<?php 

try name:";

}} catch (pdoexception $e)

噹噹當,看到正確的輸出,就證明我們的配置成功了。乙個最最最基本的環境就搭建好了。是不是很簡單?

不知道大家有沒有注意到我測試**中的

$con = new pdo('mysql:host=mysql;dbname=test', 'xuye', 'xy123456');
這一行,我新建容器的時候並沒有把mysql容器link進來,這裡的host我直接用mysql也能成功,為什麼呢?因為真正執行這段**的是php容器,(如果不清楚nginx和php之間的關係,最好先上網查資料弄清楚)而之前我們在php容器裡把php容器link進去了,所以這裡是可行的,當前換成mysql容器的ip也是一樣的,可以通過dokcer inspect contanier_name|id來檢視容器的有關資訊, 不過只能在內網裡面使用容器的ip。如果你想在外網訪問容器裡的mysql,還是要通過主機的公網ip:port這種形式來訪問。

ps:上面我們都是通過輸入一條條命令去建立容器,為了更高效的建立容器,我們可以事先寫乙個shell指令碼,把這些命令打包,通過命令sh *.sh去執行指令碼

docker 搭建 lnmp 環境

這幾天學了 docker 又用 docker 搭建了自己的環境。這中間遇到了很多坑,為此特意寫此博文,供你們搭建環境的時候借鑑。本篇本章預設你有 docker 的基本知識 本篇用到的環境 實踐 搭建 dockerfile 首先我們編寫我們的 dockerfile mysql from mysql 5...

docker搭建lnmp環境

四 參考 有收穫的話請加顆小星星,沒有收穫的話可以反對沒有幫助舉報三連 from 指定基礎映象 from 映象 from php 7.2 fpm run 執行 run 命令 orrun 可執行檔案 引數1 引數2 run echo usr share nginx html index.html ru...

docker搭建lnmp環境

安裝 nginx 1 檢視可用版本 docker search nginx 2 獲取nginx映象 docker pull nginx 版本 3 檢視本地映象 docker images 4 執行容器 docker run name my nginx p 81 80 d nginx 引數說明 nam...