docker搭建lnmp環境


一 安裝 nginx

 

1 查看可用版本

docker search nginx

2 獲取nginx鏡像

docker pull nginx[:版本]

3 查看本地鏡像

docker images

4 運行容器

docker run --name my-nginx -v ~/nginx/www:/usr/share/nginx/html:ro -p 81:80 -d nginx

參數說明:

--name my-nginx:容器名稱命名為my-nginx

-p 81:80:端口進行映射,將本地81端口映射到容器內部的80端口 [左邊本地:右邊容器]

-d nginx:設置容器在后台一直運行

5 安裝成功

docker ps 

6 測試

瀏覽器訪問:127.0.0.1:81

 

二 安裝 php

 

1 查看可用版本

docker search php

2 安裝鏡像

docker pull php[:版本]

注意:下載php最好指定版本號,如 pull php:7.1-fpm ,默認最新的php版本沒有fpm

3 查看本地鏡像

docker images

4 運行容器

docker run -p 9000:9000 --name my-php  -v ~/nginx/php-log:/usr/local/var/log -v ~/nginx/www:/usr/share/nginx/html:ro -itd php:7.1-fpm

參數說明:

--name my-php:容器名稱命名為my-php

-p 9000:9000:端口進行映射,將本地81端口映射到容器內部的80端口

-v ~/nginx/www:/usr/share/nginx/html:掛載,將主機項目中的目錄掛載到容器的/usr/share/nginx/html

-it:參數交互運行

-d:參數后台運行

ro:只讀權限

注意:docker機制,docker容器運行必須有一個前台進程,如果沒有前台進程執行,容器認為空閑就會自行退出。

常規后台運行php,一運行會立馬退出,所以加入-it參數。

 5 安裝成功

docker ps 

 

三 安裝 mysql

 

1 查看可用版本

docker search mysql

2 拉取mysql鏡像

docker pull mysql[:版本]

3 查看本地鏡像

docker images 

4 運行容器

docker run -itd --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

參數說明:

-itd:后台交互運行

--name my-mysql:容器名稱命名為

-p 3306:3306:映射容器服務的3306端口到宿主機的3306

-e MYSQL_ROOT_PASSWORD:設置容器內環境變量,root的用戶密碼為root

5 安裝成功

docker ps

6 測試

6.1 進入容器

docker exec -it [容器名稱|容器ID] bash

6.2 進入mysql

mysql -h localhost -u root -p 

 

四 php+mysql部署

 

1 啟動php+mysql容器

docker run --name php-mysql -p 9002:9000 -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/php-log:/usr/local/var/log --link my-mysql:mysql  -itd php:7.1-fpm

參數說明:

--name php-mysql:容器名稱命名為php-mysql

-p 9002:9000:端口映射,將本地9002端口映射到容器內部的9000端口

-v :掛載,將主機項目中的目錄掛載到容器的/usr/share/nginx/html,將nginx配置文件掛載到/etc/nginx/conf.d,將nginx日志文件掛載到/var/log/nginx

--link my-mysql:php:php鏈接mysql,把my-mysql的網絡並入php

2 安裝成功 

docker ps

注意:

如果mysql版本是8.0以上,需要做一些調整

常見問題:

請看鏈接:https://www.cnblogs.com/jingxiaoniu/p/12566883.html

 

五 nginx+php部署

 

1 創建核心文件夾方便后續將容器內文件映射到本地,以便查看/修改

mkdir ~/nginx/nginx-conf ~/nginx/nginx-log ~/nginx/php-conf ~/nginx/php-log ~/nginx/www

2 復制php以及nginx的配置和日志文件到本地

2.1 復制php的配置文件

docker cp my-php:/usr/local/etc ~/nginx/php-conf

2.2 復制php的日志

docker cp my-php:/usr/local/var/log ~/nginx/php-log

2.3 復制nginx的配置文件

docker cp my-nginx:/etc/nginx/conf ~/nginx/nginx-conf

2.4 創建nginx的日志文件

touch ~/nginx/nginx-log/error.log ~/nginx/nginx-log/access.log

注意:

復制出來的目錄可能多一級,把配置文件全部復制到根目錄下

3 重新運行啟動nginx容器

docker run --name php-nginx -p 82:80 -d -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/nginx-conf/conf.d:/etc/nginx/conf.d -v ~/nginx/nginx-log:/var/log/nginx --link php-mysql:php -d nginx 

參數說明:

--name php-nginx:容器名稱命名為php-nginx

-p 82:80:端口映射,將本地82端口映射到容器內部的80端口

-v :掛載,將主機項目中的目錄掛載到容器的/usr/share/nginx/html,將nginx配置文件掛載到/etc/nginx/conf.d,將nginx日志文件掛載到/var/log/nginx

--link my-php:php:nginx鏈接php,把php-mysql的網絡並入nginx

4 安裝成功

docker ps 

5 測試

127.0.0.1:82

6 修改本地配置文件解析php文件

配置文件中需要將解析php的注解去掉,修改root路徑

注意:

核心是php配置文件的fastcgi_pass和fastcgi_param,如果這兩個參數錯誤,會導致php的代碼無法解析

常見問題:

 https://www.cnblogs.com/jingxiaoniu/p/12560115.html

 

六 容器互聯

 

說明:上面的nginx+php+mysql我們是使用--link的方式,共享多個容器的網絡,不是經常用,開發中我們通常使用--network實現多個容器共享。

1 新建一個自定義網絡

docker network create -d bridge test-net

create部分常用參數說明:

-d/--driver:-d bridge 使用橋接網絡,

--gateway:網關設置 192.168.0.1

--subnet:網段設置 192.168.0.0./16

2 查看創建的網絡

docker network ls

3 需要互聯的容器,運行時加上--network參數,這樣容器之間就可以實現網絡互聯

docker run --name my-nginx --network test-net -p 81:80 -d nginx

 

七 docker-compose 啟動(內含Dockerfile)

 

詳情請看鏈接:https://www.cnblogs.com/jingxiaoniu/p/15148382.html

 

以上就是本次的全部內容!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM