MacOS Docker本地部署流水

Docker 簡介

Docker是一個開源的引擎,能夠輕鬆的爲任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試經過的容器能夠批量地在生產環境中部署,包括VMs(虛擬機)、 bare metal、OpenStack 集羣和其餘的基礎應用平臺。node

Docker一般用於以下場景:git

  • web應用的自動化打包和發佈;
  • 自動化測試和持續集成、發佈;
  • 在服務型環境中部署和調整數據庫或其餘的後臺應用;
  • 從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。

上面都是摘抄,咱們仍是直接實踐吧~github

裝包

有兩種方式,使用homebrew直接安裝,或者下載包手動安裝
homebrew安裝(比較慢)web

brew cask install docker
複製代碼

下載包安裝下載地址docker

到桌面上你會看到圖標,打開以後,在任務欄,會出現鯨魚icon 數據庫

好了,docker已經跑起來了~npm

鏡像加速

鑑於國內網絡問題,後續拉取Docker鏡像十分緩慢,咱們能夠須要配置加速器來解決,我使用的是網易的鏡像地址:hub-mirror.c.163.comvim

在任務欄點擊 Docker for mac 應用圖標 -> Perferences... -> Daemon -> Registry mirrors。在列表中填寫加速器地址便可。修改完成以後,點擊 Apply & Restart 按鈕,Docker 就會重啓並應用配置的鏡像地址了。bash

咱們跑一下命令查看下版本和相關信息網絡

docker -v
docker info
複製代碼

image文件 && 容器文件

咱們再來稍微瞭解一下docker中兩個靈魂概念

image文件

Docker 把應用程序及其依賴,打包在 image 文件裏面。只有經過這個文件,才能生成 Docker 容器。image 文件能夠看做是容器的模板。Docker 根據 image 文件生成容器的實例。同一個 image 文件,能夠生成多個同時運行的容器實例。

容器文件

image 文件生成的容器實例,自己也是一個文件,稱爲容器文件。也就是說,一旦容器生成,就會同時存在兩個文件: image 文件和容器文件。並且關閉容器並不會刪除容器文件,只是容器中止運行而已。

先跑個官方例子

先從倉庫把鏡像拉下來,這個是官方的倉庫,因此能夠直接拉取

docker image pull library/hello-world
複製代碼

拉取成功以後,就能夠查看鏡像列表

docker image ls
複製代碼

由於我以前裝過,因此不止一個,你們的列表裏應該只有hello-world
那咱們如今把它跑起來

docker container run hello-world
複製代碼

docker container run命令會從 image 文件,生成一個正在運行的容器實例。

注意,docker container run命令具備自動抓取 image 文件的功能。若是發現本地沒有指定的 image 文件,就會從倉庫自動抓取。所以,前面的docker image pull命令並非必需的步驟。

若是運行成功,你會在屏幕上讀到下面的輸出。

這是官方的例子,沒依賴,沒有麻煩的配置,若是是本身的項目呢?因此...咱們又要開始準備工做了~~

接來下,咱們須要跑一個私人node項目,因此咱們要先從git上拉代碼,因此先裝個gitlab

gitlab

docker search gitlab
docker pull gitlab/gitlab-ce:latest
複製代碼

OK,咱們拉個項目吧~

mkdir docker-demo0108 
cd docker-demo0108 
git clone https://github.com/daly-young/nuxt-test.git
cd nuxt-test 
複製代碼

在項目的根目錄下,新建文本文件.dockerignore和Dockerfile。

vim .dockerignore

.git
node_modules
npm-debug.log
複製代碼
vim Dockerfile

FROM node:8.11.3
COPY . /nuxt-test
WORKDIR /nuxt-test
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
複製代碼

FROM node:8.11.3:該 image 文件繼承官方的 node image,冒號表示版本號,本身的項目用什麼版本寫什麼版本。
COPY . /nuxt-test:將當前目錄下的全部文件(除了.dockerignore排除的路徑),都拷貝進入 image 文件的/nuxt-test。
WORKDIR /nuxt-test:指定接下來的工做路徑爲/nuxt-test。
RUN npm install:在/nuxt-test目錄下,運行npm install命令安裝依賴。注意,安裝後全部的依賴,都將打包進入 image 文件。
EXPOSE 3000:將容器 3000 端口暴露出來, 容許外部鏈接這個端口。

咱們來建立image文件吧

// 最後的這個.必定要加上!
 docker image build -t nuxt-test .
複製代碼

看到這個輸出的時候說明鏡像建立完成了。咱們看下鏡像列表

docker image ls
複製代碼

鏡像OK了,而後就是建立容器了~~~

docker container run命令會從 image 文件生成容器。

docker container run -p 8000:3000 -it nuxt-test /bin/bash
複製代碼

建立成功~此時咱們已經在項目裏了,能夠直接跑項目了

npm run dev
複製代碼

等我一會 ~~~ 還沒寫完 ~~~ (╬ ̄皿 ̄)=○

相關文章
相關標籤/搜索