# 使用Docker Ubuntu Apache建立Laravel環境
###### tags: `docker`
`
## 下載網址:https://www.docker.com/products/docker-desktop/
## 安裝完畢開啟docker


## 開啟cmd輸入指令建立Ubuntu Linux容器
```
docker run -p 5001:80 -it --name ${容器名稱} ubuntu
EX: docker run -p 5001:80 -it --name linebot_ubuntu ubuntu
```

### 若再docker images中並無Ubuntu將會自行幫您使用,docker pull Ubuntu下載容器,由於我安裝過了所以並無安裝的流程
https://hub.docker.com/_/ubuntu

### 載完應該會自行進入容器

#### 若無請輸入指令 進入容器
```
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

### 修改conf檔案
### 修改專案位子與開啟AllowOverride
Directory /var/www/html
AllowOverride None改為AllowOverride All
```
sudo nano /etc/apache2/apache2.conf
```

### 修改專案讀檔位子(laravel會先讀取public/index.php)
```
sudo nano /etc/apache2/sites-available/000-default.conf
```
DocumentRoot修改為/var/www/html/public

### 開啟Rewrite功能
Apache預設會安裝rewrite,但預設會關閉,必須要打開才能用
```
sudo a2enmod rewrite
```
### 重新啟動Apache2
```
service apache2 restart
```
### 查詢容器ID

#### 使用指令
```
docker inspect --format="{{.Id}}" ${容器名稱}
EX: docker inspect --format="{{.Id}}" linebot
```

## 建立測試laravel專案
```
cd /ver/www/html
ls -la
rm -rf *
rm -rf .*
composer create-project laravel/laravel . --prefer-dist
```
開啟你設定的port

## 開啟讀寫權限

```
sudo chmod -R 777 bootstrap/cache
sudo chmod -R 777 storage
sudo chmod -R 777 public
```

## 退出後產生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