1、创建sprintboot项目。
@Controller
public class TestController {
@Resource
private UserService userService;
@GetMapping("haha")
@ResponseBody
public String haha() {
System.out.println("欢迎光临");
return "你好啊,docker里的springboot项目";
}
}
2、在springboot项目里,增加Dockerfile文件和.dockerignore文件
Dockerfile文件内容如下:
FROM java:8
WORKDIR application
COPY target/es_learn-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8088
ENTRYPOINT ["java", "-jar", "app.jar"]
.dockerignore文件内容如下:(只保留target目录下的jar文件)
**
!target/*.jar
使用“mvn package”命令,就可以在target目录下生成es_learn-0.0.1-SNAPSHOT.jar文件
3、命令行下进入Dockerfile所在目录
4、通过Dockerfile构建镜像
#命令(后面的.不能少)
docker build -t es_learn:v3 .
# 输出
Sending build context to Docker daemon 78.08MB
Step 1/5 : FROM java:8
...
Step 5/5 : ENTRYPOINT ["java", "-jar", "app.jar"]
---> Running in 9c1924a5171a
Removing intermediate container 9c1924a5171a
---> 1e1ba0ad3c98
Successfully built 1e1ba0ad3c98
Successfully tagged es_learn:v1
#查看构建的镜像
docker images es_learn
REPOSITORY TAG IMAGE ID CREATED SIZE
es_learn v1 1e1ba0ad3c98 49 minutes ago 721MB
5、根据镜像创建容器
docker run -d --name es_learn -p 8080:8088 es_learn:v1
#查看日志
docker logs es_learn
2021-07-21 12:22:00.633 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2021-07-21 12:22:01.560 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8088 (http) with context path ''
2021-07-21 12:22:01.584 INFO 1 --- [ main] org.luo.es_learn.EsLearnApplication : Started EsLearnApplication in 10.968 seconds (JVM running for 12.074)
6、浏览器访问项目
7、踩的坑
1)mysql连接问题:在docker容器里访问宿主机的mysql,不能用localhost:3306,mac和windows需要用host.docker.internal:3306,参考:https://blog.csdn.net/Aaren_Jiang/article/details/111936579
2)springboot项目中用了jsp,本地的服务可以正常访问,部署到docker里,访问就报错,目前还未解决。