windows环境下spring项目部署自己的docker和K8s(DAY1)

  嚯嚯,懒鬼又来咯。今天带来spring项目的docker部署。

  由于笔者公司条件限制,docker desktop 不可用。大部分操作都是WSL操作的。WSL是啥,建议大家自行观看,附上官网的链接(https://learn.microsoft.com/zh-cn/windows/wsl/install)。

  由于笔者是wsl2装的unbantu,这个是缺少docker的部件的。所以咱们从头开始。新装的unbantu也是缺少containerd服务,这个也得安装。

  1、安装containerd

sudo apt install containerd

  2、查看containerd是否安装成功

containerd --version

  3、下载docker服务

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

  4、编辑服务

  查看这个docker的服务

ls /lib/systemd/system/docker.service

  没有就自己创建,具体内容如下

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target nss-lookup.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket
StartLimitBurst=3
StartLimitIntervalSec=60

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target

  重启服务

sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl start docker

  查看是否正确运行

systemctl status docker.service

  同时我们可以进一步查看docker的版本

docker version

  至此,docker在wsl中已正确安装

  4、编写springBoot项目dockerfile

FROM openjdk:17-jdk-alpine
LABEL authors="lannoy"
# 创建非 root 用户和用户组(提高安全性)
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring

# 复制 jar 文件并重命名(使用 COPYADD 更清晰)
COPY --chown=spring:spring ./target/test-0.0.1-SNAPSHOT.jar app.jar

# 声明应用端口(Spring Boot 默认 8080EXPOSE 8080

# 启动命令(去掉 &,让 Docker 管理进程)
ENTRYPOINT ["java", "-jar", "app.jar"]

  5、idea里面属性配置

  点击右上角的箭头选中编辑配置,弹窗编辑,编辑内容如图,注意右下角的内容,一定要连接成功才可以

  6.idea上传本地镜像

  注意要先打包本地项目成test-0.0.1-SNAPSHOT.jar,否则运行项目无法找到,imageTag也最好要自己新加。格式为<repository>:<tag>类型。运行上述dockerfile,结果如下图。

  

  我们再在wsl查看,结果如图

  

  7、运行本地镜像

docker run -d -p 8080:8080 镜像id

  这样我们的spring服务就完成了本机也是8080可以访问

  

 

  

posted @ 2025-06-18 14:45  lannoy  阅读(92)  评论(0)    收藏  举报