該學的還是要學 Docker(1)

目標

  • 使用 docker-compose 直接將所有的服務 on 起來
  • 安裝 Nginx
  • 安裝 MySQL 8.0
  • 安裝 php 7.4
  • 安裝 Redis

前言

docker 一直都是我的待學習項目,之前都是稍微摸一點摸一點,
都沒有特別認真學習或是有一個稍微可以成功展示的成果,
趁疫情比較有空閒的時間,將開發環境嘗試由 MAMP 改為 docker的過程做一個紀錄,

MAMP好用歸好用,但每次都會卡在一些莫名其妙的地方,
php.ini的路徑有多個,xdebug造成loading速度緩慢等因素。

趁機轉為 docker 可以快速部署環境且可以直接切換工具的版本,不同的專案可以使用不同的版本同步進行。

細節不會紀錄太多,討厭太冗長的內容,多打幾次指令就會熟了,
我也是參考許多人的分享,之後自己調整成自己覺得順眼的版本,
使用別人分享的版本時,一定會有卡關的地方,仔細看安裝過程中的錯誤訊息再網路上查一定會有解答。

檔案樹狀圖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── docker-compose.yml
├── mysql
│   ├── Dockerfile
│   ├── my.cnf
│   └── mysql57
├── nginx
│   ├── Dockerfile
│   └── conf.d
├── php74
│   └── Dockerfile
├── project
│   ├── laravel
└── redis
└── Dockerfile

遇到的坑

如果你跟我一樣是習慣自己手刻一步一步完成的人,可以跟您分享我遇到的一些

  • docker-compose.yml ,檔案名稱打錯,打成 dockercompose-compose 或 docker-composer
  • docker-compose.yml的 build不需要指定資料夾內的檔案
    • build: ./nginx (正確)
    • build: ./nginx/Dockerfile (錯誤)

常用指令

  • docker ps
  • docker images
  • docker pull
    • 書本建議不要使用 tag 是 latest 的 image,由於是最新版本,可能會有不穩定的情況
  • docker rmi (刪除image)
  • docker (刪除container)
  • docker exec -it container_id /bin/bash
  • docker-compose up
  • docker-compose build

時常看到的指令

  • docker -itd

    • -i 分配一個終端機介面
    • -t 互動輸入模式
    • -d 在背景模式執行
  • redis 安裝後出現錯誤訊息

    • Class ‘Redis’ not found
      • 在 php 的 Dockerfile 中 安裝 redis 套件
        1
        2
        RUN pecl install redis
        RUN docker-php-ext-enable redis
    • Connection refused
      • 將專案的連線設定 由 localhost 或 127.0.0.1 改為 docker-compose.yml的名稱 redis

如果這一篇文章有幫助到你的話,
請您幫忙點選廣告,都是以不擾人與不強迫的方式呈現