# 學習進度 * [目前學習進度](https://youtu.be/5VQ7bTyznmU?list=PLmOn9nNkQxJFX0YVLDw5EMUL-4cVzXL33&t=1) # 感覺實用的資料 ## [監控 docker 目前使用資源](https://github.com/google/cadvisor) ## [用Docker搭建Laravel开发环境](https://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU2MA==&mid=2247483807&idx=1&sn=061f9a4f6711d7c4550c4f9012d9ad4e&chksm=fa80d008cdf7591edd2373aae91c76b4b13ec8a30a6f55d4f851556a288ca4c25f428910ddd3#rd) ## [Docker — 从入门到实践](https://yeasy.gitbook.io/docker_practice/) ## [精简Docker镜像的五种通用方法](https://dockone.io/article/8163) ## [Docker tutorial PART I](https://hackmd.io/@8irD0FCGSQqckvMnLpAmzw/HJRrjtDtN) ## [Docker tutorial PART II](https://hackmd.io/@8irD0FCGSQqckvMnLpAmzw/S1xwOhwtV) ## [Laravel + Docker 輕鬆上手](https://medium.com/%E4%B8%80%E5%80%8B%E5%B0%8F%E5%B0%8F%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%84%E9%9A%A8%E6%89%8B%E7%AD%86%E8%A8%98/laravel-docker-%E8%BC%95%E9%AC%86%E4%B8%8A%E6%89%8B-4cefeeb3febc) ## [站在 Docker 的肩膀上,部署任何語言的 Web 應用到 Heroku](https://medium.com/starbugs/deploy-any-web-application-to-heroku-with-docker-b64b9b0eb93) ## [使用laradock來部屬laravel](https://home.gamer.com.tw/creationDetail.php?sn=5415251) ## [100 行 shell 写个 Docker](https://my.oschina.net/vivotech/blog/7364496) ## [用docker image 在heroku部署網站](https://medium.com/starbugs/deploy-any-web-application-to-heroku-with-docker-b64b9b0eb93) ## [如何將前端網站打包成 Docker Image](https://blog.wu-boy.com/2020/07/how-to-create-docker-image-in-reactjs-or-vuejs/) ## [其實沒有那麼難 — Docker 系列](https://ithelp.ithome.com.tw/users/20120541/ironman/5683) ## [Docker实用命令手册](https://juejin.cn/post/7273025863981006848) # 實用指令 ## 使用 node 在當前目錄建立 vue 專案 ```dockerfile docker run --rm -v "${PWD}:/app" -w "/app" -u node -it node:latest sh -c "yarn add global @vue/cli && yarn exec vue create ." ``` ### 另一種寫法,會新建立一個專案目錄 ```dockerfile docker run --rm -u 1000:1000 -v $PWD:/app -w /app -u node -it node:latest sh -c "npm init vue@latest" ``` ## 在本地端開啟 vue 專案 ```dockerfile docker run --rm -p 8080:8080 -v "${PWD}:/app" -w "/app" -u node -it node:latest sh -c "npm run serve" ``` ### 使用 vite run 起來的 ```dockerfile docker run --rm -p 5173:5173 -u 1000:1000 -v $PWD:/app -w /app -u node -it node:latest npm run dev -- --host ``` ## 使用 docker 在當前路徑下下載 laravel 專案 ```dockerfile docker run --rm -v $PWD:/app -w /app composer create-project laravel/laravel ``` # 使用紀錄 * 在laradock資料夾下 * docker-compose up -d nginx mysql * docker-compose down * 建議laravel 專案自己另外下載,不要用docker-compose 的bash * composer create-project laravel/laravel --prefer-dist projName "7.*" * 不指定好像會是最新的 * nginx\sites\xxx.conf * 中的root 要設定成/var/www/public * 預設會設定成/var/www/laravel/public * docker container run --rm -v ${PWD}:/app/ php:7.4-cli php /app/test.php * 使用php 在當前路徑下使用php7.4 版本找test.php 執行 * [參考網站](https://stackoverflow.com/questions/54182191/how-to-run-a-php-script-on-docker) * docker container run --rm -v ${PWD}:/app/ composer composer create-project --prefer-dist laravel/laravel /app/direct-docker-test * 使用composer 在當前路徑下安裝名為direct-docker-test 的laravel 專案 * docker container run --rm -u=1000:1000 -v ${PWD}:/app/ composer composer create-project --prefer-dist laravel/laravel:^7.4 /app/echo * 安裝7.4版本 laravel * docker container run --rm -v ${PWD}:/app/ composer composer create-project --prefer-dist laravel/laravel=7.* /app/mongoArrange * 指定 laravel 版本 * 使用 mongo 的坑,安裝不了以下兩個套件 * composer require mongodb/mongodb --ignore-platform-reqs * composer require jenssegers/mongodb --ignore-platform-reqs ## 20211012 全新下載使用版本 * 開個資料夾 * cd 進該資料夾 * 下載需要的laravel 版本 * composer create-project laravel/laravel --prefer-dist projName "可選不填則為最新版" * 下載laradock * git clone https://github.com/Laradock/laradock.git Laradock * 複製.env 檔案 * from![](https://i.imgur.com/Le5VrqQ.png) * to![](https://i.imgur.com/huaWYwZ.png) * 修改紅框兩處,選擇跟laradock 資料夾==同一層==的laravel 專案 & 放資料的data 資料夾 * ![](https://i.imgur.com/7pLnTku.png) * 再到nginx 資料夾複製.conf檔案 * ![](https://i.imgur.com/sHJaWQQ.png) * 這個中間的laravel 要記得刪掉 * ![](https://i.imgur.com/Ka8atft.png) ### 資料夾結構路徑圖 * ![](https://i.imgur.com/GAWTKfw.png) ## 20211013 * [Laradock配置PHP多版本共存](https://www.karlxu.com/article/details/26) * docker-compose up -d nginx php-fpm8 mysql * [How to change the PHP version in Laradock?](https://cyrildewit.github.io/2020/04/19/how-to-change-the-PHP-version-in-Laradock/) * rebuild php-fpm 有點久 ## 20211115 * [解决Docker使用WSL2项目运行慢的问题](https://learnku.com/articles/51641) ## 20211204 ## 20211207 * [wsl 中 NPM 無法使用的解法](https://stackoverflow.com/questions/39311147/cannot-run-npm-commands) * [WSL2:運行 npm install 錯誤](https://blog.cwlove.idv.tw/wsl2-npm-install-no-such-file-or-directory/) ## 20211229 * 實用工具 makefile * [指令參考網址](https://blog.csdn.net/mjLlm/article/details/90675552) * [laravel 相關參考](https://ithelp.ithome.com.tw/articles/10244853) ## 20211230 * 最佳化相關 * [用 Docker Multi-Stage 編譯出 Go 語言最小 Image](https://blog.wu-boy.com/2017/04/build-minimal-docker-container-using-multi-stage-for-go-app/) * [Docker与Golang的巧妙结合](http://dockone.io/article/1712) ## 20230106 * [他人 Dockerfile - Multi-stage build 筆記](https://amikai.github.io/2021/03/01/docker-multi-stage-build/) ## 20230108 * 當 docker run 的時候用 -v 掛載時 $PWD:/app 後面的 /app 可在 image build 時設定 WORKDIR /app 對應 ## 20230126 ### 使用 docker 在當前路徑下下載 laravel 專案 ```dockerfile docker run --rm -v $PWD:/app -w /app composer create-project laravel/laravel ``` ## 20230203 ### 稍微整理一下此份筆記紀錄 * 整理成更加利用 HackMD 的資料結構 ## 20231209 ### docker-compose 的多 yaml 檔案設定 : COMPOSE_FILE * [連結](https://docs.docker.com/compose/environment-variables/envvars/#compose_file) ## 20240124 * build image user 較安全的作法 ```dockerfile ARG RUST_VERSION=1.75.0 FROM rust:${RUST_VERSION}-slim-bookworm AS builder WORKDIR /app COPY . . RUN \ --mount=type=cache,target=/app/target/ \ --mount=type=cache,target=/usr/local/cargo/registry/ \ cargo build --release && \ cp ./target/release/hello-rs / FROM debian:bookworm-slim AS final RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "10001" \ appuser COPY --from=builder /hello-rs /usr/local/bin RUN chown appuser /usr/local/bin/hello-rs COPY --from=builder /app/config /opt/hello-rs/config RUN chown -R appuser /opt/hello-rs USER appuser ENV RUST_LOG="hello_rs=debug,info" WORKDIR /opt/hello-rs ENTRYPOINT ["hello-rs"] EXPOSE 8080/tcp ``` ## 20240126 * 遇到 OS can't spawn worker thread: Operation not permitted (os error 1) 的錯誤 * 本機 build 後且 up service 成功,結果上 vps 時 service 建立失敗 * 使用 logs 看到以上錯誤 * 本來以為是不是 VPS 只有單核,然後使用 rust 使用多核功能造成的錯誤(結果不是) * 看了其他類似的案例後懷疑是 docker 版本過舊造成 * 看了很多升級 docker 版本的作法,都很麻煩 * 最後[在這](https://dev.to/faridteymouri/how-to-update-docker-and-docker-compose-on-ubuntu-gam)看到較簡易的方式,將 docker & docker-compose 都更新版本後就沒問題了 * docker :::info ![image](https://hackmd.io/_uploads/BkkLXEbc6.png) ::: * docker-compose :::info ![image](https://hackmd.io/_uploads/SkrXQEZ96.png) ::: ## 20240131 * [用來分析 image 的工具](https://github.com/wagoodman/dive) * 用法 ```shell docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive <要檢查的 image> ```