---
# System prepended metadata

title: laradock
tags: [Laravel]

---

# laradock
https://www.bilibili.com/video/BV1m4411P7er?p=4&spm_id_from=pageDriver


## php
可看這專案
https://github.com/crater-invoice/crater

## 關於workspace容器

workspace是laradock連結各個容器的重要容器
https://ithelp.ithome.com.tw/articles/10219270

## 基本安裝
專案跟laradock同一層資料夾

跟文黨一樣步驟
laradock .env可以改你要的配置
但一樣你build過後 會直接吃鏡項
![](https://i.imgur.com/TlbvbbK.png)


## 注意事項
php 跟 mysql 要改低版本

nginx的cofig

![](https://i.imgur.com/2xIEfeh.png)
資料夾名稱要對應外面資料夾名稱
![](https://i.imgur.com/b0UAH5K.png)

另外還要改
windos / system32裡面/dir那個 裡面的host
改自己的dns

mysql 的原本欲設密碼 是root 

如果要連接
用exec連過去 記得exec是兩個參數
第一是容器名稱 第二個是abg 是可以外部帶入的 這邊放入bash的位置

### 更改 DB_HOST
在本地不會遇到
因為一樣是本地
當然比較建議用composer workspace
因為這是laraDocker專們的
這樣之後去生產環境也比較好


```
終於解決了這個問題。我將 .env DB_HOST=127.0.0.1 更改為 DB_HOST=db 然後它的工作！

“ DB_HOST= docker-compose.yml 上 mysql 容器的服務名稱”

這次我的mysql容器名稱是db，所以需要DB_HOST為db。
```

切回專案資料夾，開啟 .env 檔案，將環境參數的 DB_HOST 從 127.0.0.1 改成 mysql 。
DB_HOST=mysql

特別注意DB_HOST要改成mysql。

Project的設定檔要因應環境來修改，在Docker的環境下，每個Container都可以視作一個伺服器，所以對他們而言127.0.0.1是自己，但我們不會希望phpMyAdmin是連給自己吧：）

所以我們要讓phpMyAdmin再往外連到外部伺服器（你的主機本體），然後從外面連回來MySQL的port 3306。


對於 Mac OSX 和 Docker for Windows）是將主機地址替換localhost 為host.docker.internal

DB_HOST=host.docker.internal
DB_DATABASE=databasename
DB_USERNAME=root
DB_PASSWORD=testpassword
基本上，DNS 名稱host.docker.internal將解析為主機使用的內部 IP 地址。

## 彩雷
php改動 Workspace也要重啟
https://blog.csdn.net/lune_windy/article/details/103164837


給 777權限
The stream or file "/var/www/twnml_backend/storage/logs/laravel-2022-06-29.log" could not be opened: chmod(): No such file or directory create file► search


帳號沒權限
file_put_contents(/var/www/twnml_backend/storage/framework/cache/data/85/5f/855f92484c8c414d36c1b25cb24876e30229cbbf): failed to open stream: Permission denied

一樣給777


git hub ssh


copy那邊改 ssh
![](https://i.imgur.com/JmLvmjF.png)
然後重build restart 然後會沒權限 bad premission
chmod 600 ~/.ssh/id_rsa

指令介面
先安裝zsh 然後安裝oh-my-shell

權限問題
use 也在開一個group
chown 擁有者
chomd 權限

![](https://i.imgur.com/US4ce6H.png)
:後面是group 最好給root
前面擁有者 最好是給自己use


```
[Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user

    Remove MYSQL_USER="root" and use one of the following to control the root user password:

    - MYSQL_ROOT_PASSWORD

    - MYSQL_ALLOW_EMPTY_PASSWORD

    - MYSQL_RANDOM_ROOT_PASSWORD
```
    
    用戶root已保留，並且在啟動時已使用 mysql 創建。

MYSQL_USER必須是不同的名稱，而不是root.
    
    
## wsl 安裝php

https://www.youtube.com/watch?v=EJVvf2VqKRI
先安裝版本包 才能安裝php多版本

不然預設就7.4

然後安裝
add-apt-repository
私人包
才能裝8

最後就安裝8


php cli可以透過 update-alternatives 來進行版本切換

切換至PHP 5.6

sudo update-alternatives --set php /usr/bin/php5.6
切換至PHP7.1

sudo update-alternatives --set php /usr/bin/php7.1

###### tags: `Laravel`