# Docker Compose Relese * 準備好要用的 docker-compose * 確定你的 docker-compose 跑得起來 ## 重新整理 Docker Compose * Release 出去的 Docker Image tag 會被看到, 所以建議好好重新命名 (auth/image_name:version) * ecr 之類的名稱資訊建議拿掉 * nginx 之類直接加上一些 config 拿來用的, 可以用 Dockerfile 重包 * DottedSign 之類已經完整的, 可以 re-tag * `docker tag 58...68.dkr.ecr.us-east-1.amazonaws.com/dottedsign:preparing kdanmobile/qnap_dotted_sign_web:1.0` * 開一個新的 project folder * 建立一個新的 docker-compose.yml * 讓他使用新的 image tag * 讓他只需要 docker-compose.yml 跟 image, 不需其他檔案 (比較方便一點) * 確定可以正常 run ## 壓縮 Docker Image * 把 docker image 壓成 tar.gz 檔 * 可以不用再從 docker hub 抓 (避免 ecr 登入) * 指令 : `docker save kdanmobile/qnap_dotted_sign_web:1.0 | gzip -c > dotted_sign_web.tar.gz` * 一個 image 可能有很多個 tag, 但 tar 只會紀錄指令中的那個 (kdanmobile/qnap_dotted_sign_web:1.0) * 若是指令中使用 image id (sha256), 則 tar 中不會有 tag 資訊 (只剩 id) * 把這些新的 Image 壓縮檔丟到新的 project folder * 這個 folder 只包含 docker-compose.yml 及 image 壓縮檔 * 只需要這個 folder, 就能重新 run 整個 docker compose ## 還原 Docker Image * 在其他電腦拿到這個 folder 後 * 切到 folder 裡 * 還原 docker-image : `docker load < dotted_sign_web.tar.gz` * 檢查 `docker ps -a` 應該可以看到你的 docker image * `docker-compopse up -d` 應該可以正常執行 ## 其他資訊 ### QNap 上的 system-docker 指令 * 一般 docker 指令 * QNap 內建一般 docker * QNap QTS 有提供 Container Station, 可以直接 run docker * QNap 另外提供了 `system-docker-compose` * 所有 docker, docker-compose 相關的指令, 都有對應的 `system-docker`, `system-docker-compose` 版本 * 範例 : `system-docker ps -a`, `system-docker-compose up -d` * 他就是一般 docker, 只是把所有的 image, container, volume 等, 跟原本 docker 區隔開 * QNap 工程師建議若要把 docker-compose 包裝成 QPKG, 可使用 system-docker-compose * 一般的 docker 指令, QTS 的 container station 不會看到 system-docker 的相關資訊, 不會造成使用者誤刪 or 其他麻煩