精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用本地 Docker 更好地開發?我們總結了這八條經驗

運維
如果你像我們一樣需要運行許多不同的應用程序,那么將開發環境容器化可以極大地提高工作效率。這里有一些可以優化本地 Docker 環境的技巧。

在 Viget,Docker 已經成為本地開發不可或缺的工具。我們的團隊構建和維護著大量的應用程序,運行著不同的軟件棧和版本,并且能夠將開發環境打包,這讓不同項目的切換和開發人員快速上手新項目變得非常容易。這并不是說在本地使用 Docker 開發就沒有缺點,但它帶來的便利遠遠超過了缺點。

隨著時間的推移,我們總結出了自己的一套最佳實踐,可以有效設置 Docker 開發環境。請注意最后一點(“本地開發”)——如果你是為了部署而創建鏡像,那么這些原則中的大多數都不適用。我們的開發環境一般包括(通過 Docker Compose 編配):

  • 應用程序(例如 Rails、Django 或 Phoenix);
  • JavaScript 監視器 / 編譯器(例如 webpack-dev-server);
  • 數據庫(通常是 PostgreSQL);
  • 其他必要的基礎設施(如 Redis、ElasticSearch、Mailhog);
  • 有些應用程序實例偶爾也會做一些其他的事情,而不只是運行開發服務器(比如后臺任務)。

基于這樣的架構,以下是我們試圖進行標準化的最佳實踐。

1. 不要將代碼或應用級的依賴項放入鏡像中

你的主 Dockerfile 文件,也就是運行應用程序所需的文件,應該包含運行應用程序所需的所有軟件,但不應該包含應用程序代碼本身——當 docker-compose run 命令開始執行時,它們將被掛載到容器中,并在容器和本地機器之間進行同步。

另外,區分系統級依賴項(如 ImageMagick)和應用級依賴項(如 Rubygems 和 NPM 包)也很重要——前者應該包含在 Dockerfile 中,后者不應該。將應用級依賴項放到鏡像中意味著每次有人添加新依賴項時都必須重新構建鏡像,這既耗時又容易出錯。相反,我們應該將這些依賴項作為啟動腳本的一部分。

2. 非必要不使用 Dockerfile

基于第一點,你可能會發現根本不需要編寫 Dockerfile 文件。如果你的應用程序沒有任何特殊的依賴項,可以將 docker-compose.yml 的入口指向官方的 Docker 倉庫(如 ruby:2.7.6)。這樣做并不常見——大多數應用程序和框架都需要一定數量的鏡像基礎(例如,Rails 需要 Node),但如果你發現自己的 Dockerfile 只包含一個 FROM 行,你就可以不使用這個文件。

3. 只在 docker-compose.yml 中引用一次 Dockerfile

如果你將同一個鏡像用于多個服務(你應該這么做),只需要在一個服務的定義中提供構建說明,給它起一個名字,然后在其他服務中引用這個名字。舉個例子,假設有個 Rails 應用程序使用一個共享的鏡像來運行開發服務器和 webpack-dev-server,那么配置可能像這樣:

services:
rails:
image: appname_rails
build:
context: .
dockerfile: ./.docker-config/rails/Dockerfile
command: ./bin/rails server -p 3000 -b '0.0.0.0'
node:
image: appname_rails
command: ./bin/webpack-dev-server

這樣,當我們在構建服務(使用 docker-compose)時,鏡像就只構建一次。如果我們省略 image: 指令同時復制 build:,就會構建完全相同的鏡像兩次,這樣會浪費磁盤空間和有限的時間。

4. 在命名卷中緩存依賴項

正如第一點所提到的,我們不會將代碼依賴項放到鏡像中,而是在啟動時安裝它們。可以想象的是,如果我們每次重啟服務時都從頭開始安裝 gem/pip/yarn 這樣的庫,速度會非常慢,所以我們使用 Docker 的命名卷來保持緩存。上面的配置可能會變成這樣:

volumes:
gems:
yarn:
services:
rails:
image: appname_rails
build:
context: .
dockerfile: ./.docker-config/rails/Dockerfile
command: ./bin/rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
- gems:/usr/local/bundle
- yarn:/app/node_modules
node:
image: appname_rails
command: ./bin/webpack-dev-server
volumes:
- .:/app
- yarn:/app/node_modules

命名卷的掛載點可能因不同的軟件棧而異,但原則是差不多的:將編譯后的依賴項保存在已命名的卷中,以大幅縮短啟動時間。

5. 將臨時的東西放入命名卷中

上一點提到使用命名卷來提高性能,這里有另一個有用的技巧:將保存只讀文件的目錄放入命名卷中,阻止它們被同步回本地機器(這會帶來很大的性能開銷),特別是 log 和 tmp 目錄,以及應用程序存儲上傳文件的地方。

根據經驗,如果一個目錄出現在.gitignore 中,那么最好把它放入命名卷中。

6. 在 apt-get 更新后進行清理

如果在 Dockerfiles 中引用了基于 Debian 的鏡像,你就必須運行 apt-get update,然后才能通過 apt-get install 安裝依賴項。如果不做一些處理,一堆額外的數據會被放到鏡像中,極大增加了鏡像的體積。

我們的最佳實踐是在一個 RUN 命令中執行更新、安裝和清理操作:

RUN apt-get update && \
apt-get install -y libgirepository1.0-dev libpoppler-glib-dev && \
rm -rf /var/lib/apt/lists/*
7 使用 exec 而不是 run

如果需要在容器中運行命令,你有兩個選項:run 和 exec。前者將啟動一個新容器來運行命令,而后者將連接到一個已經在運行中的容器。

在大多數情況下,假設在開發應用程序時總是有其他服務在運行,那么 exec(特別是 docker-compose exec)就是你所需要的,因為它運行起來更快,而且不會留下任何奇怪的文件(如果你忘了在 run 中包含 --rm 標志,就會發生這種情況)。

8. 使用 wait-for-it 協調服務

如果使用了之前提到的共享鏡像和依賴項命名卷,你可能會遇到這樣的問題:一個服務會在另一個服務的入口點腳本執行完畢之前啟動,從而導致發生了錯誤。當出現這種情況時,我們可以引入 wait-for-it 腳本,它將向一個 Web 地址發起請求,當這個地址返回響應時再執行命令。

所以,我們把 docker-compose.yml 修改一下:

volumes:
gems:
yarn:
services:
rails:
image: appname_rails
build:
context: .
dockerfile: ./.docker-config/rails/Dockerfile
command: ./bin/rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
- gems:/usr/local/bundle
- yarn:/app/node_modules
node:
image: appname_rails
command: [
"./.docker-config/wait-for-it.sh",
"rails:3000",
"--timeout=0",
"--",
"./bin/webpack-dev-server"
]
volumes:
- .:/app
- yarn:/app/node_modules

這樣,在 Rails 開發服務器完全啟動并運行之前,webpack-dev-server 是不會啟動的。

以上就是我們在過去幾年中總結的一些 Docker 最佳實踐,我們也將努力保持更新這個清單。

責任編輯:龐桂玉 來源: 運維派
相關推薦

2017-11-06 10:35:02

SaasCAC云計算

2018-10-17 14:18:34

2023-06-07 15:32:22

2011-05-18 15:40:52

MySQL

2021-04-27 10:02:40

股票數組代碼

2009-07-08 11:11:23

JVM

2010-08-30 09:37:48

2021-02-25 22:17:19

開發技術編程

2019-03-25 20:40:51

微服務IT開發

2021-09-13 07:10:54

Hive查詢效率

2023-02-06 21:58:23

2018-05-09 14:18:20

開發代碼流程

2023-10-15 16:42:51

2012-06-01 11:13:58

應用推廣八條黃金法則

2011-05-06 15:34:02

打印機word

2018-10-11 09:40:53

前端JavaScript編程語言

2020-07-08 08:22:08

FlutterSVGPNG

2009-01-19 15:34:38

數據倉庫基本準則IDC

2022-02-11 09:45:54

IT人才IT組織

2019-01-21 09:44:56

Elasticsear運維監控
點贊
收藏

51CTO技術棧公眾號

欧美性色黄大片人与善| 成人97在线观看视频| 国产欧美123| 国产又粗又猛又黄又爽无遮挡| 日韩欧美网址| 欧美日本一区二区三区四区| 亚洲国产精品影视| 亚洲精品成av人片天堂无码| 亚洲成人直播| 日韩高清免费观看| 午夜精品久久久内射近拍高清| 亚洲天堂中文字幕在线| 欧美另类视频| 精品国产三级a在线观看| 日本a在线天堂| 精品国产黄色片| 亚洲狠狠婷婷| 亚洲一二在线观看| 亚洲欧美自偷自拍另类| 操你啦视频在线| 国产乱人伦精品一区二区在线观看| 久久久精品美女| 国产无套精品一区二区三区| a在线视频v视频| 99re在线视频这里只有精品| 国产97在线|日韩| 美国美女黄色片| 免费欧美网站| 狠狠躁夜夜躁人人躁婷婷91| 欧洲成人一区二区| 国产欧美日韩成人| 亚洲最黄网站| 伊人成人开心激情综合网| 亚洲黄色av片| heyzo高清中文字幕在线| 久久天天做天天爱综合色| 国产精品久久久久久久久久久新郎 | 亚洲www视频| 欧美成人精品激情在线视频| 欧美精品中文| 欧美群妇大交群的观看方式| 国产精品12345| 国产福利在线| 国产99精品视频| 国产精品久久久久不卡| 久久9999久久免费精品国产| 极品美女一区二区三区| 日韩一区二区三区三四区视频在线观看 | 欧美丰满美乳xxx高潮www| 男女啪啪免费观看| 久久天堂电影| 国产精品一二三| 国产成人精品一区二区| 久久久久亚洲AV成人| 国产一区网站| 亚洲第一色在线| 亚洲五月天综合| 国内在线视频| 中文子幕无线码一区tr| 国产精品一码二码三码在线| 在线观看av大片| 国产欧美一区二区色老头| 久久精品视频亚洲| 亚洲第一综合网| 欧美日韩精品一区二区三区在线观看| 在线播放日韩导航| 手机在线看福利| 中文一区一区三区高中清不卡免费| 自拍偷拍国产精品| 日韩精品大片| 天堂91在线| 成人午夜在线播放| 91香蕉国产在线观看| 国产乡下妇女三片| 久久蜜桃精品| 久久久免费观看视频| 男女性高潮免费网站| 成人在线免费小视频| 亚洲欧美日韩中文在线| 在线免费播放av| av成人男女| 精品国产成人系列| 欧美一级片在线免费观看| 欧美日本三级| 日韩一区二区免费在线电影| 天堂av手机在线| 亚洲精品第一| 欧美剧情片在线观看| 少妇黄色一级片| 香蕉成人影院| 91国产成人在线| 99视频在线免费| 日韩三区免费| 欧美影院一区二区| 天堂在线一区二区三区| 91久久青草| 欧美一区二区视频在线观看2020| 亚洲免费成人在线视频| 成人亚洲精品| 日韩欧美综合在线| 久久久久久久穴| 成人免费在线电影网| 亚洲福利影片在线| 中文字幕第4页| 亚洲影院天堂中文av色| 中文字幕欧美视频在线| www.av免费| 天天影视欧美综合在线观看| 九九精品在线播放| 538精品在线观看| 精品av久久久久电影| 欧美国产第二页| 久久精品视频6| 日韩午夜av在线| 欧美在线精品免播放器视频| 夜夜躁日日躁狠狠久久av| 美女视频黄 久久| 亚洲自拍偷拍色片视频| 成人精品在线播放| jiyouzz国产精品久久| 欧美日韩精品中文字幕一区二区| 日韩欧美电影在线观看| 欧美国产综合色视频| 麻豆md0077饥渴少妇| 国产美女一区视频| 在线观看成人小视频| www.桃色.com| 亚洲妇女av| 日韩在线www| 福利一区二区三区四区| 日本欧美一区二区在线观看| 91亚洲午夜在线| 色婷婷在线视频| 亚洲国产成人一区二区三区| 日本三日本三级少妇三级66| 日韩伦理精品| 欧美人妇做爰xxxⅹ性高电影| 久久久男人的天堂| 欧美综合一区| 国外色69视频在线观看| 一级特黄aaa| 波多野结衣中文一区| 亚洲高清视频一区| 五月天av在线| 日韩天堂在线观看| 五月天精品视频| 国产精品v日韩精品v欧美精品网站 | 久久久噜噜噜www成人网| 日韩欧美三区| 亚洲摸下面视频| 日本免费www| 影音先锋久久精品| 成人免费看吃奶视频网站| 欧美男男激情freegay| 最新欧美精品一区二区三区| 免费黄色日本网站| 波多野结衣在线一区二区 | 99久久国产免费看| 免费看日本黄色| 91精品国产一区二区在线观看| 亚洲偷熟乱区亚洲香蕉av| 国产无码精品久久久| 国产一区二区不卡在线 | 欧美大胆a级| 九九视频这里只有精品| 在线观看免费视频a| 国产欧美一区二区三区在线老狼| 久久av综合网| 看亚洲a级一级毛片| 色av中文字幕一区| 中文字幕第315页| 国产日韩综合av| 欧美日韩在线不卡视频| 精品久久对白| 午夜精品久久久久久久99热浪潮| www.国产黄色| 亚洲欧美乱综合| 国产性生活一级片| 欧美在线视屏| 91精品视频在线| 国产二区三区在线| 日韩欧美中文字幕公布| 午夜精品一区二区三区视频| 国产在线视视频有精品| 懂色av一区二区三区四区五区| 粉嫩av一区二区三区四区五区| 一本一道久久a久久精品逆3p| 欧美三级网站在线观看| 国产日韩精品一区二区三区| 91视频免费版污| 97视频精品| 亚洲精品日韩av| 欧美理论电影| 亚洲国内精品在线| 天天综合天天干| 久久精品人人爽人人爽| 中文久久久久久| 久久影视一区| 99在线看视频| 久久久男人天堂| 亚洲丝袜av一区| 国产又粗又黄又爽| 一区二区三区.www| 在线观看成人动漫| 新67194成人永久网站| 欧美日韩亚洲在线| 最新亚洲国产| 欧美俄罗斯性视频| 五月婷婷综合久久| 色婷婷国产精品久久包臀| 一区二区三区伦理片| 精品一区二区三区在线播放| 黄色片免费在线观看视频| 林ゆな中文字幕一区二区| 欧美性做爰毛片| 在线免费av网站| 欧美v国产在线一区二区三区| 国产无遮无挡120秒| 久久久99久久| 污污视频网站在线| 一本久道久久综合狠狠爱| 日韩福利影院| 秋霞影院一区| 日韩av免费在线| 美女隐私在线观看| 亚洲国产欧美精品| 一二三区中文字幕| 天天射综合影视| av资源在线免费观看| 成人av网站大全| 香港三级韩国三级日本三级| 欧美一站二站| 99精品国产一区二区| 狠狠躁少妇一区二区三区| 色av中文字幕一区| 婷婷综合激情网| 欧美日韩国产片| 欧美三级午夜理伦| 亚洲免费视频成人| 人妻一区二区视频| 99国内精品久久| 蜜桃福利午夜精品一区| 久久久久一区| 日韩精品视频在线观看视频| 日本欧美视频| 久久艳妇乳肉豪妇荡乳av| 日韩精品亚洲专区在线观看| 国产精品av电影| xxxx另类黑人| 美女少妇精品视频| www.国产精品.com| 亚洲精品ady| 亚洲老妇色熟女老太| 欧美精品第一页| 黄色污污视频软件| 欧美日韩午夜视频在线观看| 成年人av电影| 国产精品久久久久久久午夜片| 免费毛片视频网站| 91亚洲大成网污www| 久久久久国产免费| 国产一区二区三区四区在线观看| 最近中文字幕一区二区| 久久国产99| a级黄色一级片| 亚洲网站在线| 国产高清不卡无码视频| 亚洲精品网址| 国产日本欧美在线| 亚洲不卡av不卡一区二区| 亚洲高清视频一区| 日韩片欧美片| 天天综合狠狠精品| 女人丝袜激情亚洲| 九色综合日本| 欧美三级午夜理伦三级小说| 成人在线免费观看一区| 伊人久久一区| 成人激情视频在线播放| 欧美aaa视频| 日本久久久久亚洲中字幕| 一本大道色婷婷在线| 91大神福利视频在线| 中国色在线日|韩| 日韩av毛片网| 久久免费影院| 国产在线播放91| 国产高清日韩| 999在线观看免费大全电视剧| 免费观看亚洲视频大全| av色综合网| 红杏一区二区三区| 免费成人av网站| 国产精品三级| 亚洲精品成人a8198a| 天天久久综合| 黄网站色视频免费观看| 亚洲三级国产| 国产三级日本三级在线播放| 美女性感视频久久| 精品人妻一区二区三| 成人av免费在线播放| 日本黄色网址大全| 欧美国产国产综合| 亚洲天堂网av在线| 亚洲综合999| 一级成人黄色片| 欧美视频中文一区二区三区在线观看| 夜夜躁很很躁日日躁麻豆| 日韩欧美亚洲另类制服综合在线| 色呦呦中文字幕| 亚洲视频欧洲视频| a级毛片免费观看在线| 久久久久久久久久久人体| 欧美电影免费观看高清完整| 成人精品一区二区三区电影黑人| 日韩精品一区二区三区中文在线| 精品视频在线观看| 欧洲美女日日| 在线看成人av电影| 欧美一区二区三区另类| 日韩精品视频久久| 丝袜a∨在线一区二区三区不卡| 亚洲精品乱码久久久久久自慰| 日本欧美一区二区在线观看| 国产福利精品一区二区三区| 99久久伊人精品| 黑人巨大精品欧美| 中文字幕第一区二区| 亚洲不卡在线播放| 黄色一区二区在线| 国产乱码一区二区| 亚洲欧美日韩爽爽影院| 羞羞的视频在线看| 国产精品你懂得| 日日天天久久| www.69av| 日韩中文字幕亚洲一区二区va在线| 午夜视频你懂的| 国产91精品在线观看| xxxx日本免费| 亚洲综合精品自拍| 在线视频你懂得| 亚洲最新视频在线| 性网站在线观看| 69精品小视频| 一区二区三区日本视频| 日本一区网站| 亚洲精品1区| 久久无码人妻一区二区三区| 欧美激情在线看| 999这里只有精品| 欧美成人bangbros| 中文字幕中文字幕在线十八区| 国产精品高潮呻吟久久av野狼| 久久大胆人体视频| 久久亚洲国产成人精品无码区| 经典三级在线一区| 99在线视频免费| 性久久久久久久久久久久| 国产孕妇孕交大片孕| 夜夜嗨av色一区二区不卡| 136福利第一导航国产在线| 亚洲精品免费网站| 国产精品成人av| 亚洲成人福利在线观看| 久久九九久精品国产免费直播| 成人在线免费看视频| 宅男在线国产精品| 免费观看成年在线视频网站| 97视频网站入口| 九九热hot精品视频在线播放| 久无码久无码av无码| 精品一区精品二区高清| 疯狂揉花蒂控制高潮h| 亚洲成人激情av| wwwav网站| 九九九热精品免费视频观看网站| 成人激情久久| 人人妻人人澡人人爽精品欧美一区| 奇米精品一区二区三区四区| 一级黄色片网址| 欧美三级欧美一级| 午夜视频在线免费观看| 国产精选久久久久久| 亚洲精品国产偷自在线观看| 在线观看视频在线观看| 亚洲免费在线看| 蜜桃在线一区二区| 2019亚洲日韩新视频| 女人av一区| gai在线观看免费高清| 亚洲男女一区二区三区| 欧美 日韩 中文字幕| 97超碰色婷婷| 久久不见久久见免费视频7| 三级在线免费看| 综合久久综合久久| 亚洲国产www| 欧美亚洲一级片|