docker部署springboot

1 打包springboot项目 maven install ,打包为lib和jar


image.png

2 编写Dockerfile文件
注意:此文件没有后缀

FROM openjdk:8-jdk-alpine
ARG JAR_FILE
ARG LIB_FILE
ADD ${JAR_FILE} app.jar
ADD ${LIB_FILE} lib
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08"]
CMD ["-Xms512m","-Xmx512m","-jar","/app.jar"]

3 上传Dockerfile, jar和lib到linux下,


image.png

4 cd 到 jar所在的目录,执行docker build命令

docker build -t discovery-eureka:1.0 --build-arg JAR_FILE=discovery-eureka-1.0-SNAPSHOT.jar --build-arg LIB_FILE=lib .

注意 最后的点不能少,表示当前路径
-t后面表示生成的镜像名称和版本
--build-arg后面是参数名称,多个参数使用多个--build-arg
5 查看刚才的镜像
docker images


image.png

6 创建并运行容器

docker run --name c-discovery -p 8081:8081 discovery-eureka:1.0

7 docker 查看日志

docker logs -f c-discovery

8 根据容器id停止、启动容器

docker stop 4bb16cffaf9a
docker start 4bb16cffaf9a

docker启动失败问题:

Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details

通过 journalctl -xe 命令,显示:

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '#' looking for beginning of object key string

重新编写daemon.json文件,文件内容为:

cat /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "registry.docker-cn.com"
  ]
}

可以换成阿里云的镜像
"insecure-registries":["registry.cn-hangzhou.aliyuncs.com"
冒号后面不能有空格

镜像上传到阿里云仓库:
https://blog.csdn.net/qq_42266114/article/details/122846772

开启防火墙:
systemctl start firewalld
firewall-cmd --reload

firewall-cmd --query-port=666/tcp 查看端口是否开放
提示 yes,表示开启;no表示未开启。

开放指定的端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent

如果真的不希望docker被访问自动唤醒,执行 systemctl stop docker 后再执行systemctl stop docker.socket即可

外面访问docker映射端口不成功,还未解决?

你可能感兴趣的:(docker部署springboot)