亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

超級慢的 Docker 構建

超級慢的 Docker 構建

PHP
開心每一天1111 2022-07-16 16:33:12
我想我要瘋了。我已經到處搜索了,似乎在 Stack、GitHub 和其他遠距離互聯網上都找不到有效的解決方案。在這個特定的項目中,運行docker-compose build需要FOREVER。以前不是這樣的,在其他使用 Docker 的項目上,這根本不是問題。并且永遠......我說的是大約 10-15 分鐘的構建時間,而過去它只需要大約 2 分鐘。我有兩個不同的同事 DL同一個 repo(一個在 Ubuntu 18 上,另一個在 macOS 14.x 上)。當他們運行build命令時,整個過程大約需要 2 分鐘。這兩個人以前從未構建過這個項目,所以他們完全從頭開始。我已經卸載/重新安裝了 Docker,運行了一個完整的docker system prune -a,通過 wifi 連接,通過以太網連接,嘗試了不同的 wifi 網絡,調整了我的 compose 文件,調整了我的 docker 文件——什么都沒有。我的機器是 2018 款 MacBook Pro,配備四核 2.7GHz i7,運行 macOS 10.14.6,安裝了 16gb 的 RAM 和 Docker Desktop 2.1.0.5。我已允許 Docker Desktop 擁有高達 12gb 或 RAM。在構建過程中,我的機器 CPU 使用率平均從 110% 上升到 270% com.docker.hyperkit。需要明確的是,它在任何事情真正開始之前就掛在“Building php”(或“Building web”)狀態消息上。之后,實際的構建過程會順利快速地運行。這是我的 docker-compose.yaml文件:version: '3.1'services:  db:    container_name: clientsname.db    hostname: db    image: mariadb:10.4.1-bionic    volumes:      - ./db-data:/var/lib/mysql:delegated    ports:      - 3307:3306    environment:      MYSQL_DATABASE: my_database      MYSQL_USER: my_user      MYSQL_PASSWORD: my_pass      MYSQL_ROOT_PASSWORD: my_pass  php:    container_name: clientsname.php    hostname: php    build:      dockerfile: php/php.dockerfile      context: ./    environment:      XDEBUG_CONFIG: remote_host=${REMOTE_HOST}    volumes:      - ../web:/var/www/web      - ../moodle:/var/www/moodle      - ../moodledata:/var/www/moodledata      - ./php/custom.ini:/usr/local/etc/php/conf.d/zzz-custom.ini      - ./php/z-errors.ini:/usr/local/etc/php/conf.d/z-errors.ini:delegated      - ./php/z-upload.ini:/usr/local/etc/php/conf.d/z-upload.ini:delegated      - ./php/z-xdebug.ini:/usr/local/etc/php/conf.d/z-xdebug.ini:delegated    depends_on:      - db  web:    container_name: clientsname.web    hostname: web    build:      dockerfile: nginx/nginx.dockerfile      context: ./    volumes:      - ../web:/var/www/web      - ../moodle:/var/www/moodle      - ../moodledata:/var/www/moodledata      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf      - ./nginx/ssl:/etc/nginx/ssl
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

這來自您的構建上下文(通常是您運行構建的目錄,但可以像您在撰寫文件中所做的那樣被覆蓋)。在執行構建之前發送的上下文目錄中有大量文件或大文件。

您可以使用.dockerignore其具有幾乎相同的格式.gitignore來排除在構建時發送的文件。并且使用 BuildKit(如果您export DOCKER_BUILDKIT=1在最新版本的 docker 中啟用)它只會在您顯式復制文件時發送上下文,然后只有當這些文件從緩存中的可用文件發生更改時才會發送上下文。

有關構建上下文的更多信息,請參閱:https ://docs.docker.com/engine/reference/commandline/build/

還有最佳實踐:https ://docs.docker.com/develop/develop-images/dockerfile_best-practices/


查看完整回答
反對 回復 2022-07-16
  • 1 回答
  • 0 關注
  • 202 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號