SpringCloud/SpringBoot项目在windows环境下docker编译部署遇到的问题,真实有效

本文介绍如何在Windows环境中正确配置Docker环境变量,并解决常见的连接错误问题,包括设置安全加密端口及证书路径。

在windows系统环境变量中新建DOCKER_HOST,值为tcp://10.100.74.220:2375,(你改成你自己的docker服务器ip地址)

前言

不懂windows上安装docker-tool工具和使用docker/docker-machine的请看这里
阿里云CentOS环境之docker安装,启动,加速器(十四)
我是不建议在windows系统上搭建docker环境的,因为docker是在linux container基础上构造的,天生与win不符,像docker-tool必然是精简版的,效率肯定不好。但从学习和开发和角度,还是有必需了解一下。

win环境设置

测试例子源码
初步了解一下:
2375:没加密,不安全的端口。默认是不开放的
2376:加密,安全的端口
docker-tool默认是开放2376的,当我们捃docker:build编译时是使用2375的,这时候就会报错。

设置环境变量,和jdk环境设置类似(选择系统变量还是用户变量对于administrator用户来说都一样)

新建如下5个环境变量(别告诉我你不会,参考JDK环境配置),name=key对应关系如下:

DOCKER_TLS_VERIFY=1
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=C:\Users\Administrator\.docker\machine\machines\default
DOCKER_MACHINE_NAME=default
 COMPOSE_CONVERT_WINDOWS_PATHS=true

注意,这一步很重要,不然即会报连接不上2375端口又会报The server failed to respond wit
h a valid HTTP response错误,这里指定的安全加密端口2375,且指定证书位置

打包,编译,镜像

进入根目录(有pom.xml的目录)
执行

mvn clean package -Dmaven.test.skip=true docker:build

出现如下则表示配置成功了,成重构构建镜像
这里写图片描述
这里写图片描述

### 构建和部署 Spring Boot 应用至 Docker #### 准备工作 确保服务器已安装 DockerDocker Compose。对于本案例,云服务器的操作系统为 Alibaba Cloud Linux release 3,Docker 版本为 25.0.0,Docker Compose 的版本为 v2.14.2[^2]。 #### 创建 Spring Boot 项目 建立一个新的 Spring Boot 工程,并配置所需的依赖项,比如 MySQL 数据库连接以及 Redis 缓存支持。此过程可以通过 Spring Initializr 或者其他 IDE 插件快速完成。确认使用的 Spring Boot 版本为 2.7.18,Maven 版本应为 3.8.1。 #### 编写 `Dockerfile` 文件 为了使应用程序能够被打包成 Docker 镜像,需在项目的根目录下创建名为 `Dockerfile` 的文件,其内容如下: ```dockerfile FROM openjdk:17-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 这段脚本指定了基础镜像是 OpenJDK 17 并复制编译后的 jar 文件到容器内指定位置,最后设置启动命令[^1]。 #### 定义 `docker-compose.yml` 接着定义一个完整的业务单元描述文档——即 `docker-compose.yml` 文件,用于管理多个关联的服务实例(如数据库、缓存等)。这里给出一个简单的例子: ```yaml version: '3' services: web: build: . ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/mydatabase?useSSL=false&serverTimezone=UTC SPRING_REDIS_HOST: redis db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: mydatabase redis: image: "redis:alpine" volumes: db_data: ``` 上述 YAML 文档中包含了三个主要部分:web (Spring Boot 应用), db (MySQL 数据库),以及 redis (Redis 缓存)[^3]。 #### 执行构建与运行指令 一旦所有的配置都准备完毕,便可以在终端里依次执行以下两条命令来进行初次构建并以前台模式启动服务: ```bash docker-compose up --build ``` 这会自动读取当前路径下的 `docker-compose.yml` 文件,并按照其中的说明去拉取必要的官方镜像、构建自定义的应用镜像、初始化数据卷、网络以及其他资源,最终启动所有声明过的服务组件[^4]。 为了让应用以后台守护进程的方式持续运作,可改用下列方式来代替前一条命令: ```bash docker-compose up -d --build ``` 这样不仅实现了自动化部署流程简化操作步骤的目的,还允许开发者随时通过附加参数重新加载最新的更改而无需手动停止再重启整个集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值