1、安裝docker和docker-compose
installdocker.sh shell腳本安裝docker和docker-compose install-docker.sh內容見附件,下載鏈接:https://download.csdn.net/download/LongtengGensSupreme/12760306
1、編譯構建鏡像
編寫一個.sh的腳本,用於在linux中構建已發布項目的鏡像,構建成功之后再導出鏡像------該鏡像是docker-compose.yml中需要用到的鏡像文件 功能:使用docker根據Dockerfile編譯構建已發布的應用程的鏡像,並導出該鏡像
build.sh內容如下
#!/bin/bash
echo "1.使用build腳本自動構建項目鏡像"
echo -e "\n\033[32m --------開始構建項目鏡像-------- \033[0m"
sudo docker build -t mywebcore -f Dockerfile . #根據Dockerfile文件構建項目鏡像,注意Dockerfile文件后面的 點,表示當前目錄
echo -e "\n\033[32m --------構建項目鏡像完成-------- \033[0m"
#導出鏡像文件
echo "2.導出鏡像文件"
echo -e "\n\033[32m --------導出鏡像文件-------- \033[0m"
sudo docker save mywebcore > mywebcore.tar # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
#sudo docker save -o mywebcore.tar mywebcore # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
echo -e "\n\033[32m --------導出鏡像文件成功-------- \033[0m"
根據項目的Dockerfile文件構建項目鏡像成功之后,從linux中把導出的鏡像文件,復制到本地,以供deploy.sh使用
導出鏡像:
sudo docker save mywebcore > mywebcore.tar # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
sudo docker save -o mywebcore.tar mywebcore # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
導入鏡像:
sudo docker load < mywebcore.tar # 導入鏡像,mywebcore.tar 鏡像文件,mywebcore 為默認導入的新鏡像名稱
sudo docker load -i mywebcore.tar # 導入鏡像,mywebcore.tar 鏡像文件,mywebcore 為默認導入的新鏡像名稱
容器
從容器導出鏡像:
sudo docker export nginx_test > mynginx.tar # 容器導出鏡像文件,mynginx.tar 容器快照文件,nginxtest 導出的容器名稱
sudo docker export -o mynginx.tar nginx_test # 容器導出鏡像文件,mynginx.tar 容器快照文件,nginxtest 導出的容器名稱
從容器快照中導入鏡像:
sudo docker import mynginx.tar nginxtest # 導入鏡像,mynginx.tar 鏡像文件,nginxtest 導入的新鏡像名稱
sudo cat mynginx.tar | sudo docker import - nginxtest1 # 導入鏡像,mynginx.tar 鏡像文件,nginxtest1 導入的新鏡像名稱
2、編寫docker-compose.yml文件
docker-compose一鍵部署的配置文件:version,services,networks,具體參照docker-compose.yml附件
3、編寫一鍵部署deploy.sh腳本:
功能:
1、停止docker容器,並刪除容器
2、docker加載需要的鏡像,nginx,mysql,項目鏡像等
3、創建需要的指定文件目錄(該目錄主要用於nginx,mysql,項目與docker容器掛載的數據目錄,主要用於docker數據的持久化), 然后把需要部署的文件通過SSH客戶端上傳到該文件目錄下,需要上傳的nginx,mysql以及項目的相關配置和鏡像文件 4、處理一些相關的操作,例如防火牆開放端口 firewall,同步時間ntp,ntpdate等 5、執行docker-compose一鍵部署安裝啟動需要的服務
#創建需要的指定文件目錄
附件:
1、 install-docker.sh 內容如下
2、docker-compose.yml內容如下
version
3、Dockerfile內容如下
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY
4、build.sh內容如下
#!/bin/bash
echo "1.使用build腳本自動構建項目鏡像"
echo -e "\n\033[32m --------開始構建項目鏡像-------- \033[0m"
sudo docker build -t mywebcore -f Dockerfile . #根據Dockerfile文件構建項目鏡像,注意Dockerfile文件后面的 點,表示當前目錄
echo -e "\n\033[32m --------構建項目鏡像完成-------- \033[0m"
#導出鏡像文件
echo "2.導出鏡像文件"
echo -e "\n\033[32m --------導出鏡像文件-------- \033[0m"
sudo docker save mywebcore > mywebcore.tar # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
#sudo docker save -o mywebcore.tar mywebcore # 導出鏡像文件,mywebcore 鏡像,mywebcore.tar 導出的鏡像文件名稱
echo -e "\n\033[32m --------導出鏡像文件成功-------- \033[0m"
5、deploy.sh內容如下
#創建需要的指定文件目錄