# 使用Docker Ubuntu Apache建立Laravel環境 ###### tags: `docker` ` ## 下載網址:https://www.docker.com/products/docker-desktop/ ## 安裝完畢開啟docker ![](https://i.imgur.com/xMz8DBL.png) ![](https://i.imgur.com/F7l2O9y.png) ## 開啟cmd輸入指令建立Ubuntu Linux容器 ``` docker run -p 5001:80 -it --name ${容器名稱} ubuntu EX: docker run -p 5001:80 -it --name linebot_ubuntu ubuntu ``` ![](https://i.imgur.com/sWYfIVL.png) ### 若再docker images中並無Ubuntu將會自行幫您使用,docker pull Ubuntu下載容器,由於我安裝過了所以並無安裝的流程 https://hub.docker.com/_/ubuntu ![](https://i.imgur.com/HyEFPcX.png) ### 載完應該會自行進入容器 ![](https://i.imgur.com/WyuLIxw.png) #### 若無請輸入指令 進入容器 ``` docker exec -it ${容器名稱} bash EX: docker exec -it linebot bash ``` ## 安裝Linux所需套件 ``` apt-get update #需要更新否則有些套件無法下載 apt-get install sudo #管理者權限 sudo apt-get upgrade #安裝系統上每個過時軟件包和依賴項的更新 apt-get install iputils-ping #判斷溝通是否有成功 sudo apt-get install nano #修改文件工具 sudo apt-get update #最後記得update一次 ``` ## 安裝php ``` sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php ``` ### 列出PHP套件 ``` apt-cache pkgnames | grep php7 ``` ### 安裝php7.3所需 ``` sudo apt-get install php7.3 php7.3-common sudo apt-get install php7.3-curl php7.3-xml php7.3-zip php7.3-gd php7.3-mysql php7.3-mbstring ``` ### 安裝composer (laravel依賴包) https://getcomposer.org/download/ ``` php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" ``` #### composer全域設定 ``` sudo mv composer.phar /usr/local/bin/composer ``` ## 安裝apache2 ``` sudo apt-get install apache2 ``` ### 安裝 Apache 的 PHP 模組 ``` sudo apt-get install libapache2-mod-php7.3 ``` ### 編輯執行順序 ``` sudo nano /etc/apache2/mods-enabled/dir.conf ``` 將index.php移到最前面,然後儲存檔案:點擊Ctrl-X、按Y確認、再按Enter ![](https://i.imgur.com/MTzfYDt.png) ### 修改conf檔案 ### 修改專案位子與開啟AllowOverride Directory /var/www/html AllowOverride None改為AllowOverride All ``` sudo nano /etc/apache2/apache2.conf ``` ![](https://i.imgur.com/D8Efyxn.png) ### 修改專案讀檔位子(laravel會先讀取public/index.php) ``` sudo nano /etc/apache2/sites-available/000-default.conf ``` DocumentRoot修改為/var/www/html/public ![](https://i.imgur.com/9nz7rsE.png) ### 開啟Rewrite功能 Apache預設會安裝rewrite,但預設會關閉,必須要打開才能用 ``` sudo a2enmod rewrite ``` ### 重新啟動Apache2 ``` service apache2 restart ``` ### 查詢容器ID ![](https://i.imgur.com/nhqSfgO.png) #### 使用指令 ``` docker inspect --format="{{.Id}}" ${容器名稱} EX: docker inspect --format="{{.Id}}" linebot ``` ![](https://i.imgur.com/CINsby8.png) ## 建立測試laravel專案 ``` cd /ver/www/html ls -la rm -rf * rm -rf .* composer create-project laravel/laravel . --prefer-dist ``` 開啟你設定的port ![](https://i.imgur.com/C3W29rS.png) ## 開啟讀寫權限 ![](https://i.imgur.com/8hEN3dk.png) ``` sudo chmod -R 777 bootstrap/cache sudo chmod -R 777 storage sudo chmod -R 777 public ``` ![](https://i.imgur.com/MExyBVm.png) ## 退出後產生images方便未來新(舊)專案重複使用 ``` docker commit -m="laravel+php7.3" -a="sam" 容器ID ubuntu:7.3 EX: docker commit -m="laravel+php7.3" -a="sam" 05d6c1303543a3573c999d5df192b59bd1da589e0bb9b688577cdfb92e909317 ubuntu:laravel ``` 解釋:-m:提交時的說明文字。-a:提交的鏡像作者 ubuntu:laravel為鏡像名稱。 # 安裝Mysql https://hackmd.io/@3dmWebizQviST-MEeRs6QA/BJs5zJDwi # docker-composer安裝且導入Laravel專案 https://hackmd.io/@3dmWebizQviST-MEeRs6QA/rJnXXkDvj