摘要:通過的我們可以將多個有機的組合起來構建出自己需要的服務但是這里有幾個小問題就是不利于分享步驟麻煩需要自己創建指定使用那如何解決上面的兩個問題呢第節例子中的服務可以通過創建一個這樣的文件來解決通過下面的命令就能將所有需要的啟動起來
通過docker 的 network我們可以將多個 container 有機的組合起來構建出自己需要的服務. 但是這里有幾個小問題就是
不利于分享.
步驟麻煩.(需要自己創建 network;指定container 使用 network;... )
那如何解決上面的兩個問題呢?
docker-compose.yml第5節例子中的服務可以通過創建一個這樣的docker-compose.yml文件來解決.
version: "3" services: nginx: image: nginx ports: - 8080:8080 volumes: - ./conf.d:/etc/nginx/conf.d depends_on: - nodeapp nodeapp: build: "./" container_name: hello environment: - NODE_ENV=production
通過下面的命令就能將所有需要的 container 啟動起來.
docker-compose up
docker-compose.yml 文件可以理解為為了讓項目工作起來組織 docker container 的 yaml 格式的配置文件. 一個 docker-compose.yml 文件就一個項目. 配置文件里面可以定義 services, volumes 和 networks 三個主要部分. 我個人的喜好是直接使用映射的方式來配置 container 的持久化的磁盤空間,所以比較少的用
volumes 部分;而一個 docker-compose.yml 啟動起來之后,docker 會為這個項目創建一個默認的 networks, 默認情況下這些容器都是連接在這個 network 中. 而且還支持用 container_name 的 dns 解析; 所以最重要的還是 services 的定義, 而 services 的定義就是根據項目需要列舉的 container 的定義.
對于 container 的定義大致有兩類, 直接可以使用的 docker hub 上 image 的. 如這個例子中的 nginx 容器;簡單的通過 image 字段就能指定需要的 image; 再通過 ports,volumes, environment 字段來指定 container 的端口映射,磁盤映射和環境變量配置等等. 能通過 docker run 選項做到的事情 docker-compose.yml 中都能做到. 特別提一點的就是在磁盤映射的時候, 宿主機的路徑可以是用相對與docker-compose.yml的相對路徑. 例子中 nginx 的定義下面的命令行一樣的意義; 其中這個 project_default 是 docker-compose.yml 啟動時創建的默認 network.
$docker run --network project_default -v $PWD/conf.d:/etc/nginx/conf.d -p 8080:8080 nginx
第二種定義的方式就基于 Dockerfile. 那容器是如何工作的就完全有 Dockerfile 來決定了. build字段是用來指定 Dockerfile所在的路徑. 例子中定義的 nodeapp 服務, 還是用了 environment 來指定程序運行的環境變量;用 container_name 指定了容器的名字, 如果不做指定的話, container 的名字使用 項目名_服務名 的格式來命名. 而且我們在 nginx 服務反向代理的時候需要用 container 的名字來訪問 node 中的 web 服務, 所以這里就定義了container 的名字.
通過 Dockerfile 和 docker-compose.yml 就能非常的方便的分享你項目運行和開發環境的配置了.
完希望大家喜歡.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27079.html
摘要:由于公司沒有運維又需要監控服務器的一些數據信息想盡快的啟動一個數值監控系統技術評估了下打算的方式來建設是一個時間數列數據庫并且自帶一些簡單圖形展示功能雖然展示方面不是很完美但是在收集時間數據上非常的方便和簡單根據官網的例子只需要一個連接就能 由于公司沒有運維, 又需要監控服務器的一些數據信息, 想盡快的啟動一個數值監控系統. 技術評估了下打算 graphite + grafana 的...
摘要:在程序員英語娛樂主題節目的直播中介紹了下在網站學習的視頻由于時間倉促只學習了一部分最近因為的公司的原因也沒有時間繼續搞直播所以想寫一篇分享下自己的的學習經驗想學習簡短有效的風格所以就將文章題目定為速成班準備本地已經安裝好了現在各個操作系統上 在程序員英語娛樂主題節目http://www.douyu.com/aftercode的直播中介紹了下在 egghead 網站學習 docker 的...
摘要:上一篇提到使用啟動一個容器如果沒有使用來指定容器名字的話會自動按照形容詞名人名的形式生成一個那這些名人是誰呢源代碼說明一切自用一些著名的科學家和黑客名字來命名容器如果有你認為有還沒有在這些列表中的話給項目提交哈哈想給牛逼項目提交嗎又多 上一篇 blog 提到使用 docker 啟動一個容器如果沒有使用--name來指定容器名字的話,docker 會自動按照 形容詞_名人名的形式生成一個...
摘要:通過將執行起來了不是為了看看容器的狀態而是想使用中的功能介紹兩種方式來使用容器中的功能通過端口訪問中的服務通過端口的方式來使用提供的服務是最簡單的了只要通過或者選項來向宿主機暴露服務端口就可以了比如我們可以這樣在后臺啟動一個服務并將中 通過docker 將 container 執行起來了,不是為了看看容器的狀態,而是想使用 container 中的功能.介紹兩種方式來使用容器中的功能....
摘要:本來想在一篇里面就寫完所有的內容的但是考慮考慮到文章太長會和風格相背離所以就按連載的形式來容器是物質基礎有了這個才能讓能運行起來運行起來的稱之為容器它使用中的一等公民直接啟動使用啟動一個容器如果你沒有下載過的話會自動下載一個的指定方法和刪除 本來想在一篇 blog 里面就寫完所有的內容的,但是考慮考慮到文章太長會和 egghead 風格相背離,所以就按連載的形式來. 容器 contai...
閱讀 3828·2021-10-08 10:12
閱讀 4325·2021-09-02 15:40
閱讀 936·2021-09-01 11:09
閱讀 1605·2021-08-31 09:38
閱讀 2543·2019-08-30 13:54
閱讀 2249·2019-08-30 12:54
閱讀 1244·2019-08-30 11:18
閱讀 1400·2019-08-29 14:06