iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Modern Web

分手前端菜雞之旅@非洲30天系列 第 16

要裝的太多了!讓Docker-compose來幫幫忙-D16

  • 分享至 

  • xImage
  •  

我的霍爾移動城堡:Docker

昨天我們不是下載並啟動了Node的Image嗎?但試想,要是我們還有MySQL,Redis...
那不是要啟動一大堆!

所以就需要docker-compose來幫幫我們啦!

免責聲明
這邊只是想讓前端菜雞對Docker有一點認識,
想要看詳細的Docker的背後落籍,建議你...不要再往下滑啦

Docker-compose是啥?

Docker-compose 利用yml檔案管理各Image和Container之間的關係,
然後讓我們可以一個指令一次啟動所有Container,
docker-compose up -d []
(不就是打造出所有虛擬空間後組成出來的霍爾移動城堡啊!)

docker 指令 和 docker-compose的關係?

建立一個容器時,我們使用dockerfile製作Image,並使用docker指令來操作。

一次建立多個容器時,使用.yml檔案(裡面描述Image之間的關係),並使用docker-compose操作。

Docker-compose yml 窺探

那我們就以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 常用指令

這邊算是我記錄的倉庫啦,有任何新用到的都會回來補充!

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-Compose 練習

可以跟著這一篇練習 透過 Docker 建立 Python Pageview App

以上!

這邊只是想讓前端菜雞對Docker有一點認識,

並且能夠簡單操作Docker。(還沒有準備好前進Devops 汗)

掰惹為,如果你跟我一樣至少有6個Container

那我的2019 Mac Pro 8RAM 都跑不動了,建議入手 16RAM以上,32RAM最好的電腦。





環遊非洲第16天-非洲唯一的西語國家:赤道幾內亞

非洲國家過去被歐洲各國殖民,至今仍使用他們的語言當作官方語言,
之前我們提到奈及利亞是世界第4大說英語國家,法文和葡萄牙語也佔有一席之地,
而過去大航海時代稱霸的西班牙,在非洲也有一塊小小領地,
至今仍是以西班牙文作為官方語言:赤道幾內亞

赤道幾內亞雖然有赤道作為名字,但其實赤道並未穿越國土,他們位於赤道北方,
是一個人口僅有近150萬的小國家。
近幾年因為發現石油,大量出口,人均GDP佔據非洲排行榜上前五名。
(但同時貧富差距也很大)

赤道幾內亞有趣的是,他們也將法語和葡萄亞語當作第二第三官方語言,
部分原因是因為他們被說法語的國家圍繞,並使用非洲法郎當作流通貨幣。
昨天提到的非洲葡萄牙語諸國(PALOP),他們也是一員。
但大部分的人還是說他們的族語或是西班牙語。

https://ithelp.ithome.com.tw/upload/images/20221001/20140247IGP1bHQeSv.jpg
圖片來源:wikipedia



參考


上一篇
可以不要安裝一些有的沒的嗎?懶人救星:Docker -D15
下一篇
菜雞必備Linux指令-D17
系列文
分手前端菜雞之旅@非洲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言