Win10 下 Laravel 開發方法二:WSL+Docker

Shuyi發表於2019-05-23

Docker大法聽人說過,其神奇精妙,不可言;但其繁雜之設定,直教人望而卻步。咳咳,所以這裡分享如何快速設定Docker。

簡單來講,跟著這個轉: https://vessel.shippingdocker.com/docs/get-started/ , 如果你是用Linux……

Windows嘛,這個Package不支援,但是,我們有WSL啊,所以,步驟如下:

  1. 下載DOCKER CE的Win10版本,並安裝。
  2. 弄好WSL,參考 : https://learnku.com/articles/28774 , 只用保證 WSL在跑, Composer裝上了,就好了
    2a. 或者,你像我一樣,喜歡Fedora/CentOS/RedHat (對的,WSL有Fedora和CentOS),辣麼,參考這個: https://learnku.com/articles/22235 (到第一步為止,剩下的不用做)

翻譯自

  1. 工作列, Docker那條抹香鯨,右鍵點選,設定這樣
    這個
  2. 設定,點Shared Drives,保證你的C盤打鉤
  3. 把設定關了。
  1. 安裝Docker-CE,
    如果是Ubuntu,指示如下:
sudo apt-get update -y

sudo apt-get install -y  apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update -y

sudo apt-get install -y docker-ce

#安裝 Python 和 PIP.
sudo apt-get install -y python python-pip

#安裝 docker-compose
pip install --user docker-compose

Ubuntu記得,要把 $HOME/.local/bin 加入 PATH。

如果是Fedora,指示如下:

sudo dnf -y install dnf-plugins-core

sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo
# DOCKER更新很慢,所以如果是29+版本的,用29版本
sudo dnf install docker-ce docker-compose --releasever=29

如果是CentOS,指示如下:

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 加 Epel
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install docker-ce docker-compose
  1. 設定DOCKER:
    echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc
    sudo usermod -aG docker $USER
  2. 看看管用不?
    docker info
    docker-compose --version
  3. 儲存設定: (某些時候Win10會崩潰,或者Terminal會崩潰,重啟就好了)
    sudo nano /etc/wsl.conf
    #把下面這行加進去
    [automount]
    root = /
    options = "metadata"

    然後裝個假C盤

    sudo mkdir /c
    sudo mount --bind /mnt/c /c
    #自動啟動
    echo "sudo mount --bind /mnt/c /c" >> ~/.bashrc && source ~/.bashrc

Vessel可以在幾分鐘內,設定起來一個DOCKER Container給你用,而且是為Laravel設計的,所以不用怕程式碼和DOCKER不同步的問題。預設安裝包括: app, MySQL,Redis(本地開發必備,因為Vessel需要),Node

  1. 進入你的Laravel專案目錄內(興許其他PHP框架也能用?沒試過)
  2. composer require shipping-docker/vessel
  3. php artisan vendor:publish --provider="Vessel\VesselServiceProvider"
  4. 保證你的DOCKER是正常執行的情況, bash vessel init
  5. ./vessel start
  6. 訪問 localhost ,應該就能看到你的專案了。
  7. 需要跑 artisan, yarn 什麼的,這麼跑: ./vessel artisan, ./vessel yarn

如果像我一樣,想要用Fedora的,把 我這個 打包下載來,丟進去 docker/app 目錄, 然後跑第五步。 我想測試看看Fedora跑的夠穩了,我再放CentOS上去(其實我自己伺服器跑的就是Fedora,沒覺得有問題)。Fedora對於PHP開發太方便了,直接是最新的PHP,Nginx什麼的,各種Extension齊全,phpunit,composer 這些是直接官方給的包。要把這些檔案改給CentOS也很方便。

需要MariaDB,而不是MySQL的,把docker-compose.yml裡面換掉就好了。

如果需要推到生產環境中用,那你直接用docker-composer即可,不需要依賴 vessel。而且Vessel除了對Redis有依賴外,其他的都還好。當然,生產環境中,這個Dockerfile 裡面的xdebug可以去掉了。 然後NGinx的設定,本人推薦: https://nginxconfig.io/

Docker的好處就是放到那裡去都是一樣用,所以你這個設定,可以一直搬來搬去,但是執行環境卻不會改變。我在研究Kubernete,希望這個能用上?

Software Engineer Practices above all
軟體開發標準高於一切

相關文章