Laravel Homestead 搭配 phpMyAdmin Docker

laravel

相信大家對於 Laravel 推出的 Homestead 開發環境不陌生,本篇不會教學使用 Homestead,直接看繁中官網的教學就可以完成了,Homestead 可以幫助開發者快速架設好 Laravel 環境,當然 Homestead 也適用於 CodeIgniter 的開發,因為兩套 Framework 的環境是一樣的,Homestead 開啟 VM 後,會自動將 Local port 對應到 VM port 如下

  • SSH: 2222 → Forwards To 22
  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → Forwards To 3306
  • Postgres: 54320 → Forwards To 5432

所以可以透過電腦 Client 軟體控制相對應你想使用的 service,但是唯獨沒有提供 phpMyAdmin,所以我到 Docker Hub 找看看有無別人弄好的 phpMyAdmin 環境,很快的找到 Docker PHPMyAdmin,只要將相關指令設定好,就可以用一行指令在你的電腦開啟 phpMyAdmin 服務,Homestead 預設的 MySQL 帳號為 homestead 密碼 secret,看到上面 port 為 33060,用 docker-machine 指令來找 Host 名稱,請直接參考底下指令

$ docker run -d \
  -e MYSQL_USERNAME=homestead \
  -e MYSQL_PASSWORD=secret \
  -e MYSQL_PORT_3306_TCP_ADDR=192.168.99.1 \
  -e MYSQL_PORT_3306_TCP_PORT=33060 \
  --name laravel-phpmyadmin \
  -p 80 corbinu/docker-phpmyadmin

完成後,用 docker ps 來看目前啟動的 Docker VM

Screen Shot 2016-01-02 at 4.08.56 PM

從上圖可以發現 0.0.0.0:32771->80/tcp 打開 http://localhost:32771 就可看到 phpMyAdmin 登入介面,輸入預設帳號密碼就可以了。

  • askasb

    請問 Local 端也是要裝 mysql 嗎?

  • appleboy48

    不用,因為 Homestead 裡面有啊

  • appleboy48

    不用,因為 Homestead 裡面有啊

  • appleboy48

    不用,因為 Homestead 裡面有啊

  • appleboy48

    不用,因為 Homestead 裡面有啊

  • askasb

    我 mysql -u homestead -h 192.x.x.x 過去後是可以連 mysql server 的
    但是開啟 http://192.x.x.x phpmyadmin 葉面有出現但 帳密一直都錯
    出現 Mysql Servce Login fail

  • appleboy48

    -e MYSQL_USERNAME=homestead
    -e MYSQL_PASSWORD=secret
    -e MYSQL_PORT_3306_TCP_ADDR=192.168.99.1
    -e MYSQL_PORT_3306_TCP_PORT=33060

    這個設定對嗎?192.168.99.1 是 docker host ip

  • appleboy48

    -e MYSQL_USERNAME=homestead
    -e MYSQL_PASSWORD=secret
    -e MYSQL_PORT_3306_TCP_ADDR=192.168.99.1
    -e MYSQL_PORT_3306_TCP_PORT=33060

    這個設定對嗎?192.168.99.1 是 docker host ip

  • appleboy48

    -e MYSQL_USERNAME=homestead
    -e MYSQL_PASSWORD=secret
    -e MYSQL_PORT_3306_TCP_ADDR=192.168.99.1
    -e MYSQL_PORT_3306_TCP_PORT=33060

    這個設定對嗎?192.168.99.1 是 docker host ip

  • appleboy48

    -e MYSQL_USERNAME=homestead
    -e MYSQL_PASSWORD=secret
    -e MYSQL_PORT_3306_TCP_ADDR=192.168.99.1
    -e MYSQL_PORT_3306_TCP_PORT=33060

    這個設定對嗎?192.168.99.1 是 docker host ip

  • askasb

    是的設定對的
    輸入 docker ps 有看到 port 0.0.0.0 ->80/tcp
    container Log 出現:
    Warning: Using a password on the command line interface can be insecure.

    ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.99.1’ (111)