Docker部署springboot项目
Springboot项目
@RestController
public class DockerController {
@RequestMapping("/")
public String index() {
return "Hello Docker!";
}
}
@SpringBootApplication
public class DockerApplication {
public static void main(String[] args) {
SpringApplication.run(DockerApplication.class, args);
}
}
Docker
安装docker
使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
启动:
systemctl start docker
部署
阿里镜像加速
关于加速器的地址,您登录容器镜像服务控制台后,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器页面就会显示为您独立分配的加速器地址。
{
"registry-mirrors": ["<your accelerate address>"]
}
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://c6n8vys4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
打包
springboot项目打成jar包(spring-boot-docker-1.0.jar)上传到centos某个目录下(比如/docker)
在/docker下创建文件Dockerfie,粘贴以下内容:
FROM openjdk:8-jdk-alpine #VOLUME 指定了临时文件目录为/tmp #其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp ADD spring-boot-docker-1.0.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
镜像
在当前目录(/docker)下,-t
生成镜像:
docker build -t image-springboot .
创建并运行容器:
docker run -d -p 8089:8080 --name xxx-name image-springboot
-d 表示后台运行, -p是映射端口前面是宿主机端口,后者是容器端口。
--name表示创建容器的名字,springboot表示镜像tag
查看运行的容器:
docker ps [-a]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f6d65b805bc image-springboot "java -Djava.securit…" 16 minutes ago Up 16 minutes 0.0.0.0:8089->8080/tcp docker-springboot-demo
停止运行的容器:
docker stop [容器ID]
丢弃Docker容器:
docker rm -f [container id | name]
查询镜像:
docker images
删除镜像:记得先删除容器
docker rmi [镜像名称]
容器启动失败 Exited(1)
// 查看容器启动失败原因
docker logs [容器id]
测试
http://宿主机IP:8089/
Hello Docker!