docker容器化部署springboot项目

前言

docker安装

下载官网

选择自己的系统
在这里插入图片描述

然后安装文档内给的命令按顺序执行即可。设置仓库,安装docker.
在这里插入图片描述

一、更换镜像源

一般情况下,docker原本自带的镜像网站不一定连的上,就很容易导致下载镜像失败,因此需要换源.
创建/etc/docker/daemon.json并填入数据

{
"registry-mirrors" : [
"https://hub-mirror.c.163.com",
"http://f1361db2.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
    "https://jkfdsf2u.mirror.aliyuncs.com",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries" : [
    "docker-registry.zjq.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "10"
  },
  "data-root": "/data/docker"
}

二、通过镜像安装软件基本步骤

2.1、搜索镜像

官网搜索

镜像搜索官网
在官网输入要搜索的关键字,搜索之后可以选择不同的镜像版本,然后复制命令
在这里插入图片描述

第一个就是要找的软件,点击进去,里面有很多版本,右边就有拉取镜像的命令
特定版本的会在软件后方加上冒号和版本
在这里插入图片描述

命令行搜索

docker search xxx

2.2、拉取镜像

上一步获取到镜像名或者复制到命令之后,需要进行镜像拉取,命令格式如下:

docker pull xxx

加入需要拉取aaa版本的tomcat,则命令如下:(不指定版本则把:aaa去掉)

docker pull tomcat:aaa

2.3、查看镜像

查看全部镜像

docker images

查看xxx镜像

docker images xxx

2.4、启动镜像生成容器(执行完这一步已经可以用了)

启动xxx镜像生成容器,容器名为mytomcat,并将容器内的8080端口映射到当前服务器的8082端口,启动之后生成终端

docker run -it -p 8082:8080 --name mytomcat xxx

-p,主机端口号:docker容器端口号
-P,随机分配端口
-i,交互
-t,终端
-d,后台运行
–name,给容器起名

mysql的生成容器命令

docker run -d --name=mysql-server -p 3307:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourpassword mysql:8.0.2

2.5、停止容器

停止名为xxx的容器,xxx也可以传ID

docker stop xxx

停止所以容器,下方是两个命令的组合,一个命令查询并返回所有正在运行容器的简短ID

docker stop $(docker ps -q)

2.6、移除容器

移除名为xxx的容器,xxx也可以传ID(需要先停止容器)

docker rm xxx

-f,强制删除
-v,同时删除容器关联的存储卷

2.7、移除镜像

移除名为xxx的容器,xxx也可以传ID(需要先停止容器)

docker image rm xxx

-f,强制移除,有时候不同镜像之间有链接关系,需要强制移除

三、构建自定义镜像-编写Dockerfile

Dockerfile是用来构建docker镜像的文本文件,是一个由一条条构建镜像所需的指令和参数构成的脚本文件。

3.1、基础知识

每条关键字指令必须全部大写字母
指令从上往下顺序执行
#代表注释
每条指令都会在原镜像基础上创建一个新的镜像层并对镜像进行提交
Dockerfile中定义了进程所需要的一切东西,包括运行环境、依赖…

3.2、Dockerfile执行流程

  1. docker从基础镜像运行一个容器(也就是最前面的FROM)
  2. 往下执行一条指令,并对容器做出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个容器
  5. 执行dockerfile的下一条指令直到全部指令都执行完毕

在这里插入图片描述

3.3、Dockerfile文件语法

最基础的Dockerfile大概包含:FROM,RUN,an,CMD

FROM

基本在Dockerfile第一行,指定基础镜像模板

RUN

利用镜像构建容器的时候执行的命令行命令,支持两种写法。

  • RUN 终端命令,比如我需要构建一个包含vim的linux系统的容器,这个时候就可以用linux作为基础镜像,然后在RUN关键字后面加上下载vim的命令来下载vim,如RUN yum -y install vim
  • RUN [“文件”,“参数”,“参数”],命令较多的情况下可以通过脚本的方式传递命令

EXPOSE

当然容器对外暴露的默认端口,也可以后续通过镜像构建容器的时候通过参数修改

WORKDIR

指定进入容器之后的落脚点目录,也就是打开容器就打开到这个指定的目录

ENV

在构建镜像过程中设置环境变量,和window的环境变量差不多意义

ADD

将宿主机目录下的文件拷贝进镜像且自动处理URL和解压tar压缩包

COPY

类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中《源路径》的文件/目录复制到新的一层的镜像内的《目标路径》

VOLUME

CMD

指定容器启动后要干的事情
用法上和RUN相似
可以有多个,但只有最后一个生效,会被docker run后面的参数覆盖。

RUN是在build的时候运行,CMD是在run的时候运行。

如下,会在/app目录下执行ls命令,然后参数为-l,ls命令需要指定命令的全路径

CMD ["/usr/bin/ls", "-l", "/app"]

ENTRYPOINT

指定一个容器启动时要运行的命令
类似CMD,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序。
和CMD一起使用的时候,CMD变成传参给ENTRYPOINT
需要确保命令不被覆盖就使用这个命令,例如将项目打包的启动命令一般会带java -jar就用这个

ENTRYPOINT ["java", "-jar", "/xxx.jar"]

3.4、构建镜像

用当前目录下的Dockerfile文件构建镜像

docker build -t xxx .

-t选项为镜像指定一个标签(或名称),这里是xxx,.代表Dockerfile文件位于当前目录(也可指定路径)

四、Docker-compose容器编排

一个dockerfile生成一个镜像,一般情况下一个服务就需要生成一个镜像,而现在一个网站部署的时候大概率需要用到多个服务,这个时候就需要用到Docker-compose。
Docker-compose.yml文件(通常命名为 docker-compose.yml)的主要作用是定义和运行多容器 Docker 应用程序。可以通过一个Docker-compose文件一次性启动并管理这些服务。容器之间的先后启动关系等。

和spring容器管理bean差不多是同一个原理,Docker-compose管理容器。

4.1、安装Docker Compose

下载官网

三步即可完成安装,复制下载命令执行,建立软链接。
在这里插入图片描述

4.2、使用步骤

编写Dockerfile定义各个微服务应用并构建出相应的镜像文件。
使用docker-compost.yml定义一个完整业务单元,安排好整体应用中的各个容器服务。
最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线。

待续

### 如何在Docker容器部署Spring Boot应用程序 #### 准备工作 为了顺利地在Docker容器部署Spring Boot应用程序,需具备一定的基础知识和技术准备。这包括但不限于对DockerSpring Boot以及YAML文件的理解和操作能力[^3]。 #### 创建Spring Boot应用 首先,在`src/main/java/com/example/demo`目录下建立一个新的Java类文件命名为`DemoApplication.java`。此文件应包含启动Spring Boot应用所需的核心代码: ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这段代码定义了一个基础的Spring Boot应用程序入口点,它能够监听HTTP请求并作出响应[^4]。 #### 构建Docker镜像 接着要创建一个名为`Dockerfile`的文本文件用于描述怎样打包上述Spring Boot程序到Docker环境中去执行。该文件通常位于项目的根目录,并且内容如下所示[^2]: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 这里选择了轻量级的基础映像openjdk:8-jdk-alpine作为运行环境,并指定了应用程序的主要入口为编译后的`.jar`包形式。 #### 执行构建与运行命令 完成以上准备工作之后就可以利用Docker CLI工具来进行实际的操作了。具体来说就是先通过`docker build -t spring-boot-app .`指令基于前面提到的`Dockerfile`来制作自定义的应用镜像;再借助于`docker run -p 8080:8080 spring-boot-app`把新生成好的镜像实例化成正在工作的容器[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值