学习docker已经有三个月了,之前总是一股脑的学,没有静下心来做整理,现在终于有时间可以好好整理三个月的学习成果了,今天就整理一下如何将写好的代码制作成镜像并将镜像上传到代码仓库。
1.代码编写
本次主要写一个springboot项目,功能是记录访问url的次数,计数是利用redis进行存储,下面是主要的代码片段
项目结构如下图所示:
CounterController:
package com.yangxw.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CounterController {
@Autowired
StringRedisTemplate redisTemplate;
@GetMapping("/hello")
public String Count(){
Long increment = redisTemplate.opsForValue().increment("count-people");
return "有【"+increment+"】人访问了页面";
}
}
JavaDemoApplication:
package com.yangxw;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JavaDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JavaDemoApplication.class, args);
}
}
application.properties:
spring.redis.host=192.168.171.200
spring.redis.password=abc123abc
2.启动redis
因为设计redis存储数据,所以在制作镜像前先将rdis部署好,为了方便起见,这次的redis采用docker方式部署,并将数据和配置文件进行挂载
redis配置文件redis.conf:
appendonly yes
requirepass abc123abc
启动rdis实例:
docker run -d --name=my-redis -p 6379:6379 -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data redis redis-server /etc/redis/redis.conf
3.编写Dockerfile:
FROM openjdk:8-jdk-slim
LABEL maintainer=yangxw
COPY demo-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
4.制作镜像
docker build -t java-demo:v1.0 .
注意:需要在Dockerfile文件同级目录执行
5.查看镜像,并部署实例
部署实例:
docker run -d --name=java-demo-1.0 -p 8081:8080 java-demo:v1.0