昨天我們不是下載並啟動了Node的Image嗎?但試想,要是我們還有MySQL,Redis...
那不是要啟動一大堆!
所以就需要docker-compose
來幫幫我們啦!
免責聲明
這邊只是想讓前端菜雞對Docker有一點認識,
想要看詳細的Docker的背後落籍,建議你...不要再往下滑啦
Docker-compose 利用yml
檔案管理各Image和Container之間的關係,
然後讓我們可以一個指令一次啟動所有Container,docker-compose up -d []
(不就是打造出所有虛擬空間後組成出來的霍爾移動城堡啊!)
docker 指令 和 docker-compose的關係?
建立一個容器時,我們使用dockerfile
製作Image,並使用docker
指令來操作。
一次建立多個容器時,使用.yml
檔案(裡面描述Image之間的關係),並使用docker-compose
操作。
那我們就以Laradock為案例,
Laradock是以PHP Laravel為基礎的全端配置,
有了Laradock就不用再安裝PHP, laravel, SQL...
來簡單看一下他們的docker-compose怎麼配置的:
Laradock Github
docker-compose.yml
# docker-compose 版本,不同版本有不同參數和設定可以加
# 詳情可看官網:https://docs.docker.com/compose/compose-file/compose-versioning/
version: '3.5'
# network下面會有很多的虛擬器
networks:
frontend:
driver: ${NETWORKS_DRIVER}
backend:
driver: ${NETWORKS_DRIVER}
# Volume:可以指定本地的文件夾,掛載到容器裡面去。
# 並搭配 -v 指令,可以容器間分享,並在本地修改(改後的資料才會儲存在本地呀)
# 詳細:https://segmentfault.com/q/1010000004107293
volumes:
mysql:
driver: ${VOLUMES_DRIVER}
# 以下省略
# 這邊就列出我們想要的Image啦
services:
workspace:
# 在 build context 指定的文件夾裡面尋找Dockerfile(Image)
build:
context: ./workspace
args:
- CHANGE_SOURCE=${CHANGE_SOURCE}
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
# 2222:22
# 2222: 本機使用2222
# 22 對應的容器port
ports:
- "${WORKSPACE_SSH_PORT}:22"
# Docker 分配一個虛擬終端機tty
tty: true
# 環境變數
environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
#掛載到下面兩個Network裡
networks:
- frontend
- backend
# links可以讓workspace 永遠連結到docker-in-docker,不管PORT是否改變
# 這個是Legacy功能,已經不建議使用了
# 和depends_on差異請見:
# https://stackoverflow.com/questions/35832095/difference-between-links-and-depends-on-in-docker-compose-yml
links:
- docker-in-docker
# 第二個容器
php-fpm:
build:
#以下省略
這邊算是我記錄的倉庫啦,有任何新用到的都會回來補充!
docker-compose up -d []
docker-compose stop
docker-compose down
docker-compose exec workspace bash
docker-compose restart nginx
docker-compose build --no-cache nginx
docker-compose logs nginx
docker-compose exec nginx nginx -t
# 加 -f 選項後,container log 只要有更新,畫面就會更新
docker-compose logs -f
可以跟著這一篇練習 透過 Docker 建立 Python Pageview App
這邊只是想讓前端菜雞對Docker有一點認識,
並且能夠簡單操作Docker。(還沒有準備好前進Devops 汗)
掰惹為,如果你跟我一樣至少有6個Container
那我的2019 Mac Pro 8RAM 都跑不動了,建議入手 16RAM以上,32RAM最好的電腦。
環遊非洲第16天-非洲唯一的西語國家:赤道幾內亞
非洲國家過去被歐洲各國殖民,至今仍使用他們的語言當作官方語言,
之前我們提到奈及利亞是世界第4大說英語國家,法文和葡萄牙語也佔有一席之地,
而過去大航海時代稱霸的西班牙,在非洲也有一塊小小領地,
至今仍是以西班牙文作為官方語言:赤道幾內亞赤道幾內亞雖然有赤道作為名字,但其實赤道並未穿越國土,他們位於赤道北方,
是一個人口僅有近150萬的小國家。
近幾年因為發現石油,大量出口,人均GDP佔據非洲排行榜上前五名。
(但同時貧富差距也很大)赤道幾內亞有趣的是,他們也將法語和葡萄亞語當作第二第三官方語言,
部分原因是因為他們被說法語的國家圍繞,並使用非洲法郎當作流通貨幣。
昨天提到的非洲葡萄牙語諸國(PALOP),他們也是一員。
但大部分的人還是說他們的族語或是西班牙語。
圖片來源:wikipedia