先学习一下如何打包!!这时还不要开始打包,等全部看完再开始!!
1,首先项目的maven依赖中要包含maven插件
org.springframework.boot
spring-boot-maven-plugin
2,使用maven进行打包
3,查看打包生成的jar包位置。
4,在服务器上安装docker
## 1、yum 包更新到最新
yum update
## 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
## 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
## 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
## 5、 查看docker版本,验证是否验证成功
docker -v
##启动docker
systemctl start docker.service
5,使用docker拉取布署过程中须要的软件
docker pull nginx
docker pull redis:5.0.3
docker pull java:8
docker pull mysql:5.7
6,镜像早已拉取完毕,接出来就要运行运行镜像,生成容器。
6.1mysql
创建mysql容器,设置端口映射,设置目录映射
//创建一个多级目录
mkdir -p /mnt/docker/mysql
//进入创建号的目录里面
cd /mnt/docker/mysql
6.2生成容器实例linux如何打包编译好的程序linux如何打包编译好的程序红旗linux6.0教程,而且将容器内部的目录映射到刚创建的目录上面对应的文件夹上面
docker run -id --name=c_mysql -p 3306:3306 -v /mnt/docker/mysql/conf:/etc/mysql/conf.d -v /mnt/docker/mysql/logs:/logs -v /mnt/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
命令解析:
dockerrun:这是用于在Docker中启动容器的命令。
-id:这是两个选项的组合,分别表示:
-i:启动容器后保持标准输入(stdin)打开,便于你可以与容器进行交互。
-d:以后台(守护进程)模式运行容器。
--name=c_mysql:这是为容器指定一个名称(c_mysql),便于你可以使用该名称来管理容器。
-p3306:3306:这是端口映射选项,将容器的3306端口映射到主机的3306端口。这促使你可以通过主机上的端口访问容器中运行的MySQL服务。
-v/mnt/docker/mysql/conf:/etc/mysql/conf.d:这是用于挂载卷(volume)的选项,将主机上的目录/mnt/docker/mysql/conf映射到容器内的/etc/mysql/conf.d目录。这容许你在主机上编辑MySQL配置文件,并使这种修改对容器中运行的MySQL服务生效。
-v/mnt/docker/mysql/logs:/logs:同样linux下载工具,这是挂载卷的选项,将主机上的目录/mnt/docker/mysql/logs映射到容器内的/logs目录,便于容器内的日志文件可以保存在主机上。
-v/mnt/docker/mysql/data:/var/lib/mysql:这也是挂载卷的选项,将主机上的目录/mnt/docker/mysql/data映射到容器内的/var/lib/mysql目录,便于MySQL数据文件可以保存在主机上。
-eMYSQL_ROOT_PASSWORD=root:这是用于设置环境变量的选项,指定了一个名为MYSQL_ROOT_PASSWORD的环境变量,并将其值设置为root。这是为MySQL根用户的密码。容器将使用这个密码来保护MySQL数据库的根用户。
mysql:这是指定要运行的Docker镜像的名称,它告诉Docker启动一个基于MySQL镜像的容器。
通过运行这个命令,你将启动一个MySQL容器,并配置了端口映射、挂载卷和MySQL根用户的密码。这个容器将在后台运行,但是你可以通过主机的3306端口联接到MySQL服务。
6.3查看mysql这个容器的网路地址是多少,将程序中的改为一致!
docker inspect c_mysql
将程序中的改为一致,这样以后程序所在的容器能和另一个容器中的mysql构建联接。
7.生成redis容器,但是查看redis容器的ip地址
docker run -id --name=redis -p 6379:6379 redis:5.0.3
8.将springboot程序通过dokcerfile生成一个jar包
Dockerfile 是一个文本文件
包含了一条条的指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
对于开发人员:可以为开发团队提供一个完全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件 构建一个新的镜像开始工作了

对于运维人员:在部署时,可以实现应用的无缝移植
8.1定义dockerfile,发布springboot项目
实现步骤
①定父王镜像:FROMjava:8
②定义作者信息:MAINTAINERmszlu
③将jar包添加到容器:ADDspringboot.jarapp.jar
④定义容器启动执行的命令:CMDjava–jarapp.jar
⑤通过dockerfile建立镜像:dockerbulid–fdockerfile文件路径–t镜像名称:版本
FROM java:8
MAINTAINER mszlu
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar
8.2创建一个文件夹,拿来生成程序镜像
8.3编辑dockerfile文件
8.4建立镜像
如今app目录下有dockerfile和生成的jar包两个文件
docker build -f ./dockerfile -t app .
dockerbuild:这是用于建立Docker镜像的命令。
-f./dockerfile:这是-f选项,用于指定Dockerfile的路径。Dockerfile是一个文本文件,它包含了建立Docker镜像所需的指令和配置信息。在这个示例中,Dockerfile的路径为./dockerfile,表示它在当前目录下。
-tapp:这是-t选项,用于指定要建立的镜像的名称和标签。在这个示例中,镜像将被命名为app,但是没有指定标签,因而默认标签为latest。
.:这表示建立上下文的路径。Docker在建立镜像时须要访问Dockerfile所需的文件和目录,这种文件和目录被称为建立上下文。在这个示例中,建立上下文的路径为当前目录,即.。Docker将在建立时使用此路径中的文件和目录。
通过运行这个命令,Docker将查找指定路径下的Dockerfile,并使用其内容来建立一个名为app的Docker镜像。你可以为Dockerfile提供建立指令,以定义镜像的建立过程,包括基础映像、依赖项安装、应用程序配置等。建立成功后,你将才能在本地Docker镜像储存中找到名为app的镜像。
建立镜像成功:
9服务编排
9.1安装DockerCompose
## Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
## 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
## 查看版本信息
docker-compose -version
docker-compose版本号
9.2使用docker-compose编排nginx+springboot项目
9.2.1创建docker-compose目录
mkdir -p /mnt/docker/docker-compose
cd /mnt/docker/docker-compose
编撰docker-compose.yml文件
version: '3'
services:
nginx:
image: nginx

container_name: nginx
ports:
- 80:80
- 443:443
links:
- app
depends_on:
- app
volumes:
- /mnt/docker/docker-compose/nginx/:/etc/nginx/
- /mnt/mszlu/web:/mszlu/web
- /mnt/mszlu/blog:/mszlu/blog
network_mode: "bridge"
app:
image: app
container_name: app
expose:
- "8888"
network_mode: "bridge"
服务编排的作用就是:根据我们在docker-compose.yml文件中的配置选项来按照镜像生成而且运行容器,节约了我们每生成一个容器后dockerrun命令后的一大串参数。
在docker-compose.yml文件所在目录,执行docker-composeup开始建立服务。
之后访问我们nginx服务器窃听端口,才能看见后端页面。