$ ls crystal_folder

🐳Docker新鮮乾貨

😵‍💫好亂好亂,有空再整理

網路教學文章收集或碎念

Docker或綜合(Dockerfile+Compose)

前端篇

Dockerfile

Docker Compose

# 在有docker-compose.yml的目錄下
docker compose up

Windows桌面版安裝踩坑錄

如果你是Windows家用版,Docker桌面版無法啟動,不用激動學網路上殺去Docker家-SwitchDaemon

這會導致切換成Windows Container,問題是家用版不可以用,所以打開軟體後會看有錯誤訊息+提示引擎中止,然後你想要再下一次-SwitchDaemon切回來WSL2時它跟你說500 error了,這時候重新安裝比較快

不用想說重新安裝要看到使用WSL2的選項——因為根本不會有

那為什麼一開始啟動會一直轉圈圈無法進入呢?要做的只有關閉Docker桌面版,對它圖示按右鍵用系統管理員執行,其實只是權限不足而已= =|||

另外就是Compose只能用Cli啟動,啟動後GUI可以看到


附錄:新鮮乾貨 待補

僅供參考,因為主要還是依專案實際情況改變,直接貼上可能是不太能用的

另外應該先設計好你的docker-compose.yml結構,才知道哪些須要Dockerfile,畫圖是蠻好的方法

前端Dockerfile跟docker-compose.yml範例(沒用pm2或Nginx)

docker-compose.yml

version: '3'
services:
  node:
    build:
      context: .
      dockerfile: ./vue/Dockerfile
    container_name: node
    restart: always
    tty: true
    ports:
      - 80:80
    volumes: # 橋接原則:常改的、要保存的、要讀的
      - .:/你前端專案在容器居住的家
      - ./node_modules:node_modules家
      - log的橋接(如果有的話,尤其像是用pm2之類的)
      - 設定檔的橋接(如果有的話)
    networks:
      - 網路組A
networks:
  網路組A:
    name: 網路組A
    driver: 非bridge要寫

volumes:
  這邊可以定義全域卷:

全域卷的實際位置

Dockerfile

FROM node:14

COPY . /你前端專案在容器居住的家

RUN npm install 如果有什麼額外的東西要裝@x.y.z -g

WORKDIR /你前端專案在容器居住的家
RUN npm install
# 如果需要build的話,我先假裝你package.json有這個命令
RUN npm run build

EXPOSE 80
CMD ["啟動命令", "一個element代表中間有空格"]

刪除image重build小心cache!!

Nginx+php-fpm

 * * * * * docker exec -it dash_laravel.test_1 php artisan schedule:run >> /dev/null 2>&1

我也有想過


常用命令

docker compose up -d # 背景開啟
docker ps # 看運行中的容器
docker exec -it 容器名稱或ID /bin/sh # 進入容器
docker compose down # 關閉
docker image ls # 看映像列表
docker rmi -f image名稱或ID # 刪除映像
docker compose build --no-cache # 無緩存重build
docker compose build 容器名稱 --no-cache # 指build單個容器
docker kill 容器名稱 # 刪除特定容器

上版策略murmur

目前想到的步驟

sudo docker compose build 異動的容器名稱
# sudo docker compose up -d # 重啟->欸不是啊這樣大家一起下去欸
sudo docker restart 異動的容器名稱

# 可以整理成單行
sudo docker compose build 異動的容器名稱 && sudo docker restart 異動的容器名稱

延伸閱讀:滾動更新<-顯然現在服務會中止不是嘛-.-


Laravel COPY時遇到的坑

我有個php-fpm容器,內容物沒清空,宿主機專案資料夾搞壞,決定rm -r再clone,重新跑Dockerfile時會再複製一份進去,但服務出現各種異常(類似這樣),應該是快取檔案對不上的關係?所以清除即可

好難~_~

#Docker #dev