1. 程式人生 > 其它 >Docker簡單安裝LNMP環境(可部署TP專案)

Docker簡單安裝LNMP環境(可部署TP專案)

Docker安裝LNMP環境

1、安裝Docker

yum install docker
# 啟動並加入開機啟動
sudo systemctl start docker
sudo systemctl enable docker

2、 安裝nginx

# 拉取管方映象
docker pull nginx
# 建立並執行容器,對映埠為80
docker run --name nginx -p 80:80 -d nginx
# 訪問IP,nginx能夠正常執行

3、 安裝PHP

# 拉取管方映象,這裡拉取的是php7,根據自己所需拉取
docker pull phpdockerio/php7-fpm

4、 檢視nginx執行路徑

# 進入nginx容器
docker exec -it nginx bash
# 檢視nginx配置檔案
cat /etc/nginx/conf.d/default.conf -n
# 找到location / {
#     root    /usr/share/nginx/html;#這是nginx預設執行路徑
#     index   index.html index.html;
# }

5、 建立並執行php容器

docker run --name phpfpm -d 9000:9000 -v /var/www/html:/usr/share/nginx/html -d phpdockerio/php7-fpm

6、 進入php容器,建立index2.php測試檔案

# 進入php容器
docker exec -it phpfpm bash
# 進入執行目錄
cd /usr/share/nginx/html
# vim 建立index2.php
# 因為docker沒有安裝vim,此時執行
apt-get update
apt-get install vim

cat << EOF > /root/.vimrc
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp936
:set fileencoding=gb2312
:set termencoding=utf-8
EOF
# 建立index2.php
vim index2.php
<?php
    echo 1;
?>
# esc :wq 儲存退出

7、 獲取到phpfpm 這個容器的ip

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' phpfpm
# 172.17.0.3

8、配置nginx 以便支援php檔案訪問

docker exec -it nginx bash
# 進入nginx配置目錄
cd /etc/nginx/conf.d
# 安裝vim
apt-get update
apt-get install vim
# 編輯default.conf配置檔案
vim default.conf
# 在default.conf中加入
location / {
    root		  /usr/share/nginx/html/tp5.1/public;#不是tp的話去掉/tp5.1/public
    index		  index.html index.htm index.php;
    
    if (!-e $request_filename){
        rewrite ^(.*)$ /index.php?s=/$1 last;
        break;
    }
}
location ~ \.php$ {
	root            /usr/share/nginx/html/tp5.1/public;#不是tp的話去掉/tp5.1/public
	fastcgi_pass    172.17.0.3:9000;
	fastcgi_index   index.php;
	fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_param	PATH_INFO $fastcgi_path_info;
	fastcgi_param	PATH_TRANSLATED $document_root$fastcgi_path_info;
	fastcgi_split_path_info		^((?U).+\.php)(/?.+)$;
	include         fastcgi_params;
}
# 儲存退出,重啟nginx
docker restart nginx
# 訪問ip/index2.php,成功

9、 拉取Mysql映象

docker pull mysql
# 建立並執行mysql容器
docker run --name mysql -p 3306:3306 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
#這是使用navicat連線會報錯
docker exec -it mysql /bin/bash
mysql -uroot -p
#授權
GRANT ALL ON *.* TO 'root'@'%';
#重新整理許可權
flush privileges;
#更新加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新root密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#重新整理許可權
flush privileges;

10、 伺服器檔案放入容器中

docker ps  #檢視容器id
docker cp linux檔案 容器id:容器路徑
#linux中查詢php.ini
php -i | grep 'php.ini'

#docker 因配置檔案出錯無法進入容器內解決辦法
#將容器配置檔案複製到伺服器上
1.docker cp mynginx:/etc/nginx/conf.d/default.conf /users/nginx/default.conf
#修改後再寫回容器中
2.docker cp /users/nginx/default.conf mynginx:/etc/nginx/conf.d/default.conf