Docker运行spring boot项目


刚接触Docker,将自己学习的一个步骤记录下来,有错误的地方希望大家指正。

一、centOS7下安装Docker

使用yum安装
1、搜索docker
yum search docker
2、安装docker
yum install -y docker

二、启动docker

1、启动命令
systemctl start docker
2、查看状态
systemctl status docker
3、查看版本
docker version
4、查看docker信息
docker info

三、创建spring boot工程

1、创建不使用数据库的项目工程
(太简单了,不写了)

四、将项目运行在docker里面

1、将Spring boot工程使用maven install打包
2、在docker所在机器上创建文件夹
mkdir jarfile
3、将本地jar包上传到该文件夹下(使用工具或者DOS命令)
在这里插入图片描述
4、创建Dockerfile文件
echo “” > Dockerfile
vim Dockerfile

FROM java:8
VOLUME /tmp
ADD demo-docker-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Dockerfile文件命令的意思:(网上抄的)
FROM:表示基础镜像,即运行环境
VOLUME:一个特别指定的目录,用于存储数据,该命令的作用是在/var/lib/docker创建一个名为tmp的目录,在开启redis服务时,需要特别指定redis的数据存储在哪个文件夹,此时这个命令就十分有用
ADD:拷贝文件并且重命名
EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界
ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
Dockerfile文件写完后Esc :wq保存退出
5、运行命令 # docker build -t demo-docker .
-t 后面的名称可以自己写,但是只能是小写,大写报错(是不是可以配置暂时不清楚@@),最后的那个点儿 . 不能少(为什么?我也不知道)
6、查看镜像
docker images
在这里插入图片描述
7、运行镜像
docker run -p 8088:8010 -d demo-docker
-p表示端口映射,冒号左边为docker容器外的端口号(8088),右边为容器内的端口号(8010),-d表示后台运行 demo-docker表示REPOSITORY的值
8、查看
docker ps
在这里插入图片描述
docker ps -a
在这里插入图片描述
9、在浏览器里面试试
在这里插入图片描述
在这里插入图片描述
正常的,嘿嘿

五、工程改造

pom.xml
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.45</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.58</version>
</dependency>
model
public class User {
   private String id;
   private String login;
   private String name;
//getter setter
}
controller
@RequestMapping(value = "/getUserList.do")
public List<User> getUserList(){
   String sql = "select * from sys_user";
   List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {
      User user = null;
      @Nullable
      @Override
      public User mapRow(ResultSet rs, int i) throws SQLException {
         user = new User();
         user.setId(rs.getString("id"));
         user.setLogin(rs.getString("loginname"));
         user.setName(rs.getString("name"));
         return user;
      }
   });
   String jsonStr = JSONObject.toJSONString(userList);
   System.out.println(jsonStr);
   return userList;
}
application.yml
server:
  port: 8010
  servlet:
    context-path: /
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://****:3306/****
    username: ****
    password: ****
    driver-class-name: com.mysql.jdbc.Driver

2、本地编译运行通过(最好本机测试一下),打jar包

六、停止demo-docker

1、通过docker ps -a查询CONTAINER ID
在这里插入图片描述
2、停止该容器
docker stop fb27fa53fa1c
3、删除
docker rm fb27fa53fa1c

七、重现部署(我是跟上面一样操作的,有没有简便的方法还不清楚)

八、测试

在这里插入图片描述
关于Docker里面安装MySQL,工程直接使用MySQL,redis,外部连接mysql,redis等我研究一下再写。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值