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内容如下
#创建需要的指定文件目录