實作流程
Windows和MacOS的Docker Desktop版內建會安裝docker compose,主要在實作,這邊就跳過囉!
啟動Docker後
開啟Terminal把目錄移動到你想要的路徑,我是設定在/Users/alvin/hapache,所以輸入
$ cd /Users/alvin/hapache
使用vi工具編寫docker-compose.yml
$ vi docker-compose.yml
不習慣用vi(vim)編寫,也可以使用下面指令之後就可以看到檔案了
$ touch docker-compose.yml
先不要管內容為什麼,之後會解釋!貼上下面的內容
services:
php-apache:
container_name: php-apache
image: php:7.4-apache
restart: unless-stopped
networks:
dev:
ports:
- 80:80
depends_on:
- mysqlhaha
volumes:
- ./logs/apache:/var/log/apache2
- ./apache/apache2.conf:/etc/apache2/apache2.conf
- ./apache/php.ini:/usr/local/etc/php/php.ini mysqlhaha:
container_name: mysqlhaha
image: mysql:8.0.22
restart: unless-stopped
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=${PROJECT_NAME}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- ./mysql/data:/var/lib/mysql
networks:
dev:networks:
dev:
driver: bridge
*注意yml格式看空白當作層級(類似python),如果對錯層會造成docker compose無法順利運行
儲存之後新建以下目錄
$ mkdir /Users/alvin/hapache/apache \
/Users/alvin/hapache/logs \
/Users/alvin/hapache/logs/apache \
/Users/alvin/hapache/mysql \
/Users/alvin/hapache/mysql/data
增加環境參數,加入.env檔案
$ vi .envor$ touch .env
裡面貼上以下內容後儲存
PROJECT_NAME=hapache
MYSQL_ROOT_PASSWORD=secret
上面做完後,需要把對應的檔案拉出來
使用指令pull我們需要的Image,並查看目前local的Image清單
$ docker pull php:7.4-apache
$ docker image ls
我的長這樣
下指令執行,並取出裡面我們需要的檔案
$ docker run -d php:7.4-apache
再輸入docker ps就可以看到目前啟動的container
這時我要取出裡面的檔案,方便針對container修改設定檔
$ docker cp 4ffb3392b2f4:/etc/apache2/apache2.conf /Users/alvin/hapache/apache$ docker cp 4ffb3392b2f4:/usr/local/etc/php/php.ini /Users/alvin/hapache/apache
在apache資料夾內就可以看到apache2.conf與php.ini檔案
之後需要調整相關設定可以直接更動這兩個檔案內容,重新啟動docker-compose就會生效了~
最後的步驟
輸入以下指令啟動
$ docker-compose up -d
輸入docker ps就可以看到啟動的container
依照yml設定的內容,我們開啟的port是80(注意80和3306port是否被佔用)
這時候去網址輸入 localhost
就可以看到apache已經成功啟動了,只是裡面沒有任何檔案造成forbidden
幫他增加一個簡單的index.html
#進入container的terminal
$ docker exec -it 090a2f95463c /bin/sh#加入內容
$ echo "hello alvin" >> /var/www/html/index.html
重新整理localhost就可以看到剛剛新增的內容啦 \ /
輸入exit或者ctrl+c離開終端
再輸入以下指令關閉docker compose
$ docker-compose down
就會依序被關閉了~
以上是簡單的實作方式
下一篇文章應該會仔細點介紹docker compose的設定檔指令和一些用法
本篇如果有什麼錯誤或建議作法或無法順利執行的
拜託一定要告訴我RRR
看到一定會感謝/回覆m (_ _) m