Linux 上部署 docker,基於 docker 搭建 lnmp 環境

回到原點發表於2020-06-15

本人知識有限,按照相對簡單的叫教程進行操作,如有好的方法可以共享
伺服器環境:CentOS 7.6,2核4g
docker版本: Docker Engine - Community(19.03.10)
安裝方法:docs.docker.com/engine/install/cen...
我採用的是安裝docker引擎的方法,這裡不展開詳解,官網上介紹的很詳細,有問題可以留言討論。
安裝完成後常用命令如下:
docker version:檢視docker版本資訊
docker images:列出本地映像
docker serach 映象名:搜尋某個映象具體資訊
docker pull 映象:版本:拉去映象資訊,不帶版本的話,預設拉最新版本
docker ps -a:檢視當前執行的容器
docker logs 容器名:檢視容器執行中出現問題日誌
docker exec -it 容器名 bash:進入容器主目錄進行操作
docker inspect 容器名:檢視容器的具體資訊
docker start/stop/restart/rm 容器名:容器的啟動/停止/重啟/刪除操作

安裝安成後我們就開始在docker中部署nginx、mysql、php環境(我是逐個進行配置安裝的)

  1. nginx的安裝配置(最新版本,1.19.0)
    (1)拉取映象檔案,執行命令 docker pull nginx
    (2)拉取完成後執行docker images可以看到剛拉取下來的映照檔案
    (3)先建立一個映照目錄來放置nginx的配置資訊以及相應的日誌資訊,這樣可以避免每次都要進入到nginx容器中進行配置修改,我建立了/data/nginx/conf、/data/nginx/www、/data/nginx/log三個目錄
    (4)可以將本機的nginx配置資訊nginx.conf複製一份到/data/nginx/conf目錄下,同時可以對service資訊進行配置,將根目錄配置到/ect/nginx/html,在這個目錄下放一個可訪問的index.html檔案來做測試用
    (5)執行啟動nginx的命令:docker run -p 80:80 –name nginx -v /data/nginx/conf:/etc/nginx -v /data/nginx/log:/var/log/nginx -v /data/nginx/www:/etc/nginx/html -d nginx
    (6)執行完成後,docekr ps -a即可檢視是否處於執行中
    (7)注意事項:我用的是80埠,所以我事先把本機執行的nginx服務停掉了(也可以對映到其他埠監聽的),上面的–name是給容器命名,-v是本地目錄跟容器中的配置資訊進行對映

2.php環境配置(7.2版本,跟我原來的版本保持一樣)
(1)docker pull php:7.2
(2)docker run -p 9000:9000 –name php -v /data/nginx/www:/etc/nginx/html -d php:7.2
(3)這裡要在nginx中配置php的資訊,以下為我的個人配置

server
   {
       listen 80;
       server_name  localhost;

       root /etc/nginx/html;
       index  index.html index.htm  index.php;
        location / {

            try_files $uri  /new_test/public/index.php?$query_string;
        }


         location ~ \.php$ {
            fastcgi_pass   172.17.0.3:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /etc/nginx/html/$fastcgi_script_name;
            include        fastcgi_params;
        }

        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;

   }

這裡講下php的配置資訊需要做一定的修改,首先是fasctcgi_pass的代理路徑,正常我們是本地127.0.0.1,這裡要改為容器的ip地址,檢視容器ip地址的方式有兩種,可以透過docker inspect 容器名,出現資訊中IPAddress為容器ip,二是直接執行docker inspect –format=’{{.NetworkSettings.IPAddress}}’ 容器名也可以看到;另一個就是fastcgi_param檔案地址,我這裡把根目錄直接替換為我的檔案根目錄/etc/nginx/html,其他就沒什麼特別的了;

3.mysql配置(5.7版本)
(1) docker pull mysql:5.7
(2) docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -it mysql:5.7
(3) 同樣安裝完成後專案中配置mysql的地址時需要檢視容器的ip,配置容器ip而不是本地ip127.0.0.1

4.到這裡環境基本配置完成了,要執行laravel專案的話,在/data/nginx/www/目錄下建立專案,並且在nginx檔案中配置路徑即可,配置完成後就可以正常訪問了。

5.容器的遷移,我們在伺服器上配置的環境資訊是可以直接將映象檔案遷移到其他伺服器上配置執行的,使用docker_hub,https://hub.docker.com/, 在官網註冊使用者名稱,本地登陸後,可以在映象檔案重新命名並上傳,其他伺服器登陸同樣的使用者名稱後pull下來即可,具體操作官網也有詳解介紹,不展開。

6.最後總結下一些問題,以上講的可能比較簡陋,有問題可以評論區一起探討。
(1)docker ps -a檢視容器程式時,如果容器沒有處於執行狀態,而是exited狀態的話,可以執行docker logs 容器名檢視出現的問題
(2)如果需要安裝php的擴充套件的話,用docker exec -it php(容器名) bash 進入容器中,正常是進入到/usr/local/bin目錄下,使用docker-php-ext-install pdo pdo_mysql命令,上面這個命令是安裝mysql擴充套件的,需要安裝了這個擴充套件專案才能連線使用mysql。該目錄下的幾個命令可以上官網檢視詳細使用教程。

7.目前想到的就大概上面這些,如果有其他問題再行補充,知識有限,寫的比較簡略,碼字不易,路過的話給個贊哈,謝謝大家!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
迷茫但不退卻

相關文章