远程访问docker服务
笔者为了测试远程访问docker中的服务,所以有了以下实验。
首先介绍一下测试环境,笔者简单的做了一个web项目部署在了服务器端,然后通过个人笔记本成功的调用到了服务器端的功能。
首先介绍Tomcat原理,将封装好的war包放入Tomcat的webapps下,在运行Tomcat时会自动解压wab包,将其发布成为一个web项目。
然后介绍web服务端的编写,这里采用的是springboot框架,首先在配置文件中导入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
依赖中封装了需要的相关方法,导入依赖之后才可以使用。
然后编写控制层,因为这里只是一个简单的事例,没有涉及到复杂的逻辑操作,所以就没有编写视图层和持久层,如果有需要可以自行添加,下面是代码
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping
public String findAll() {
return "hello";
}
}
第一行注解表明这是一个controller,第二行表示是HttpServlet的Request请求,之后的“/user”表示他的具体请求地址,之后的Get注解表示这是一个Get提交。以上就是web服务端的编写。
接着来将其封装成镜像,部署到容器之中:首先需要将项目打包成war包,我这里用的是maven进行打包,然后编写dockerfile文件,因为这个项目是基于java和tomcat的,所以需要由这两个基础镜像来进行编写,但是由于Tomcat的镜像底层也需要java(docker镜像是分层下载的,tomcat需要java,所以会下载java的那一层镜像)因此我们不需要再下载java,只需要基于tomcat就可以了,上面提高过需要将war包放到tomcat的webapp下才会解压部署,所以这里需要在dockerfile中进行声明:
from tomcat
maintainer xtt 1131467202@qq.com
COPY jpress.war /usr/local/tomcat/webapps
然后运行这个dockerfile文件就可以完成镜像,最后上传到服务端,在服务端部署这个镜像:
docker run -d -p 8080:8080 jpress
到这就基本完成了,在自己的电脑上输入地址就可以获得结果:
首先是ip地址和之前暴露的端口号,其次是自己定义的requset请求地址。