本文主要介紹使用docker進(jìn)行node項(xiàng)目部署的簡單流程帝簇。
1. docker基礎(chǔ)操作
對于docker的詳細(xì)介紹文檔很多怠肋,詳見參考資料垦梆,本節(jié)主要介紹docker的簡單部署中所需要的知識(shí)画拾。
1.1 基礎(chǔ)知識(shí)
docker是一個(gè)應(yīng)用容器引擎奈虾,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中夺谁。我覺得可以簡單的理解是docker是一個(gè)“虛擬機(jī)器”,可以將代碼文件以及環(huán)境配置一起打包肉微。
其中設(shè)計(jì)兩個(gè)比較重要的概念:鏡像和容器匾鸥。鏡像就是大家所熟知的文件存儲(chǔ)方案。
- 鏡像可以拓展出多個(gè)容器浪册。
- 容器的鏡像的一個(gè)實(shí)例扫腺,一個(gè)鏡像可以擴(kuò)展出多個(gè)容器。
- 容器的更改可以重新保存為一個(gè)新的鏡像文件村象。
1.2 基本操作
sudo docker search ubuntu # 在docker庫里面搜索
sudo docker pull ubuntu # 獲取ubuntu鏡像
sudo docker images # 查看鏡像列表
sudo docker run -i -t -p xxxx:80 -p xxxx:3000 -p xxxx:6379 -p xxxx:3306 piano_room_reservation bash# 從鏡像文件運(yùn)行一個(gè)容器笆环,并規(guī)定端口映射
sudo docker ps -a # 顯示容器列表
sudo docker rm my_container_id # 刪除容器
sudo docker start my_container_id # 啟動(dòng)容器
sudo docker close my_container_id # 關(guān)閉容器
sudo docker exec -it my_cotainer_id bash # 進(jìn)入容器命令行
2. 部署實(shí)踐
本段以THU琴房預(yù)約項(xiàng)目為例,介紹部署流程厚者。我們所配置的docker環(huán)境如下:
ubuntu 18.04
mysql 5.7
redis 4.0.9
node 10.15.0
部署流程如下(獲取ubuntu鏡像躁劣,然后在ubuntu鏡像上配置其他環(huán)境)
#------------ 安裝docker -----------------
uname -r # 查看內(nèi)核版本,要求高于3.10
wget -qO- https://get.docker.com/ | sh # 使用腳本安裝docker
sudo service docker start # 啟動(dòng)docker后臺(tái)服務(wù)
docker run hello-world # 測試運(yùn)行
#------------ 獲取ubuntu -----------------
sudo docker search ubuntu
sudo docker pull ubuntu
sudo docker images
#------------ 生成容器 -----------------
sudo docker run -d -p xxxx:80 -p xxxx:3000 -p xxxx:6379 -p xxxx:3306 piano_room_reservation# 從鏡像文件后臺(tái)運(yùn)行一個(gè)容器库菲,并規(guī)定端口映射
sudo docker exec -it container-id bash# 進(jìn)入容器交互界面
#------------ 配置docker環(huán)境 -----------------
# 安裝mysql账忘,設(shè)置賬號(hào)密碼
# 安裝redis
# 安裝node
# 配置項(xiàng)目
3. 打包遷移
本段主要介紹docker文件打包以及遷移準(zhǔn)備。
我們需要將容器文件重新打包為鏡像文件,之后將鏡像文件導(dǎo)出鳖擒。
sudo docker commit container_id image_name # 將容器打包為鏡像
sudo docker save image_name -o name.tar # 保存鏡像
sudo docker load -i name.tar # 導(dǎo)入鏡像
或者也可以選擇上傳至docker hub
sudo docker login # 登錄
# 省略注冊賬號(hào)溉浙、建庫操作
sudo docker tag image_name your_hub_name/your_respositories:tag_name # 為鏡像打上標(biāo)簽
sudo docker push your_hub_name/your_respositories:tag_name # 上傳
# 如果為公有庫,之后可以通過docker search得到