docker安裝lamp環境


簡單理解docker:docker 是一個開源的應用容器引擎,就像虛擬機,可以在它上面跑應用服務(container),而生成應用服務的就叫鏡像(image)。

1、首先得安裝docker,安裝最新的看官方文檔:https://docs.docker.com/engine/install/centos/

2、然后得熟練使用docker基本的命令,推薦:https://blog.csphere.cn/archives/22或者https://blog.csdn.net/HH2030/article/details/80994237

#主要熟練使用這幾個命令
docker images # 顯示本地所有的鏡像列表
docker pull # 從倉庫下載鏡像到本地
docker rmi # 刪除一個鏡像
docker run # 創建並啟動一個容器,本地有就啟動,沒有就獲取docker hub的
docker start # 啟動一個停止狀態的容器
docker stop # 停止容器運行
docker rm # 刪除一個容器
docker attach # 連接(進入)到一個正在運行的容器(推出后容器停止)
docker exec# 連接(進入)到一個正在運行的容器(推出后容器不停止)
#docker run重點參數
-i: 交互式操作
-t: 終端
-p:端口
-v:掛載
-d:后台執行
-w:設置工作目錄
-e:設置環境變量

3、docker安裝lamp環境,我最初的想象是docker分別拉取apache、php、mysql,然后通過docker-compose將它們關聯依賴起來,或者是基於別人的lamp鏡像進行改造,后面發現實現過程太過復雜不適合快速構建這個詞和安裝自己想要的php版本,然后就在官方提供的php鏡像里發現有php+apache的變體,這樣就解決php和apache的關聯了,所以還是要多看官方文檔,你想到的東西官方一般都能想到。

4、訪問docker hub官網:https://hub.docker.com/,搜索php,選擇官方的鏡像,可以發現,php提供php腳本鏡像外,還提供了4個變體,分別是cli、apache、fpm、alpine,拉取方法就是php:版本號-變體名稱,比如這次想要php7.1.33版本

docker pull php:7.1.33-apache

圖示:

5:拉取到鏡像后,就是運行了,運行對象可以是鏡像名+TAG或者IMAGE ID,一般選擇后者,因為唯一,本次先運行個臨時容器

docker run -d -p 80:80 --rm --name php_apache b9858ffdd4d2 

#參數解釋:-d后台運行。-p 80:80:映射端口。--rm:容器停止后自動刪除容器,因為是臨時容器,所以得加省了手動刪除容器。--name:php_apache:自定義命名容器為php_apache。b9858ffdd4d2:鏡像ID

 

 此時已經是可以訪問自己的ip,apache生效了,不過報403錯誤

6、連接容器,我們可以先連接容器進去看看,退出容器的時候輸入exit或者Ctrl+d

docker exec -it 7853e6833a30 bash

#exec:退出連接后不會停止容器。-it:以終端形式進行交互式操作,就是可以在最后面加命令。7853e6833a30:容器ID。bash:我們希望有個交互式 Shell,因此用的是bash,或者/bin/bash

 

 7、復制容器里的一些目錄文件出來本地,方便掛載和修改,比如存放網頁項目的目錄,apache的配置、日志那些都可以復制出來本地,這樣才可以使容器輕量,這里僅復制/etc/apache2/conf-available目錄做參考

docker cp 7853e6833a30:/etc/apache2/conf-available "$PWD"/conf

可以看到當前目錄下新增conf文件,修改里面的docker-php.conf文件,新加test.php保存退出

 

 8、當前目錄新建一個html目錄,在里面新建一test.php文件並加上一些php代碼比如phpinfo()

9、停止臨時容器

docker stop 7853e6833a30

停止后發現docker ps和docker ps -a都沒有容器了

10、運行新容器,並掛載html目錄和conf目錄

docker run -d -p 80:80 --name my_php_apache -v "$PWD"/conf:/etc/apache2/conf-available -v "$PWD"/html:/var/www/html b9858ffdd4d2

#-v 本地路徑:服務路徑

11、瀏覽器查看就可以發現test.php生效了,證明配置的apache也生效了

12、mysql容器的安裝可以看官方介紹:https://hub.docker.com/_/mysql,除了在生成容器的時候要配置密碼,其他需要注意的就是配置問題了

13、修改test.php連接數據庫,發現php沒有mysqli擴展,接下來安裝php的mysqli擴展。官方文檔都詳細介紹了各種安裝擴展的輔助腳本,不過都是基於Dockerfile文件開始構建的,本次要在建好的容器上加,可以用docker-php-ext-install腳本:https://github.com/mlocati/docker-php-extension-installer,它基本滿足日常所需的php擴展,而且安裝過程簡單。

首先下載該腳本,保證最新

wget https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions

 

 然后把它復制到容器里面去

docker cp "$PWD"/install-php-extensions 76d948c73e70:/usr/bin/

最后連上容器給它個權限,就可以install-php-extensions 擴展名 來安裝php擴展了

14、php查看擴展可用php -m,查看配置文件php --ini,發現Loaded Configuration File為none時要配置一個php.ini

cp "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

 


免責聲明!

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



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