【多动手】windows 下使用 docker 启动 Java 服务(docker desktop + wsl)

张开发
2026/4/16 20:40:46 15 分钟阅读

分享文章

【多动手】windows 下使用 docker 启动 Java 服务(docker desktop + wsl)
文章目录1、安装 docker desktop2、windows 安装 wsl3、docker 配置加速镜像源4、使用 docker 命令操作服务4.1 启动服务4.2 停止服务4.3 重启服务4.4 停止并删除所有容器4.5 重新拉起重点、常用5、服务测试与日志排查1、安装 docker desktop建议使用 https://docs.docker.com/desktop/release-notes/#4430 版本如果安装最新版本安装时可能会被提示 “系统不支持”注意安装完成后会提示你重启windows系统记得保存相关文件后再点击进行重启博主吃了亏所以给大家提个醒cmd 输入docker --version查看输出内容判断是否安装docker成功。2、windows 安装 wsl打开 cmd 或者 powershell输入wsl --install等待安装完成。安装过程大概率会很慢挂在后台耐心等待即可。安装完成后会让你定义wsl用户名和密码定义完之后就自动会打开 wsl 的界面。3、docker 配置加速镜像源到镜像站中去 pull image 时会出现超时的问题这种一般都是网络问题需要配置加速镜像源。在 setting - Docker Engine 中新增{registry-mirrors:[https://docker.1ms.run,https://mirror.ccs.tencentyun.com,https://hub-mirror.c.163.com]}4、使用 docker 命令操作服务启动后端服务之前呢先梳理下后端服务依赖了哪些外部服务我这边依赖了 mysql、redis、nacos所以在启动后端服务之前需要先使用 docker 启动外部服务再启动后端业务服务。这些启动的配置和运行的方式需要写在 yml 配置文件中。这块就不详细展开了工作中能看懂和进行调整就行最佳实践是让 ai 来写~例子1外部服务的启动 docker-compose.yml 内容services:mysql:image:mysql:8.0container_name:flashsale-mysqlrestart:unless-stoppedenvironment:MYSQL_ROOT_PASSWORD:rootTZ:Asia/Shanghaiports:-3306:3306command:---default-authentication-pluginmysql_native_password---character-set-serverutf8mb4---collation-serverutf8mb4_unicode_civolumes:-./mysql-data:/var/lib/mysql-./sql:/docker-entrypoint-initdb.dredis:image:redis:7.2container_name:flashsale-redisrestart:unless-stoppedports:-6379:6379nacos:image:nacos/nacos-server:v2.3.2container_name:flashsale-nacosrestart:unless-stoppedenvironment:MODE:standaloneNACOS_AUTH_ENABLE:falseJVM_XMS:256mJVM_XMX:256mTZ:Asia/Shanghaiports:-8848:8848-9848:9848-9849:9849例子2后端业务服务的 docker-compose.backend.yml 内容services:service-user:container_name:flashsale-service-userbuild:context:../flashsale-backenddockerfile:../deploy/docker/Dockerfile.backendargs:JAR_FILE:service-user/target/service-user-1.0.0-SNAPSHOT.jarenvironment:TZ:Asia/ShanghaiSPRING_PROFILES_ACTIVE:devSPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR:nacos:8848SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR:nacos:8848SPRING_DATASOURCE_URL:jdbc:mysql://mysql:3306/flashsale_user?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrueSPRING_DATASOURCE_USERNAME:rootSPRING_DATASOURCE_PASSWORD:rootSPRING_REDIS_HOST:redisSPRING_REDIS_PORT:6379depends_on:-mysql-redis-nacosports:-9001:9001restart:unless-stoppedservice-product:container_name:flashsale-service-productbuild:context:../flashsale-backenddockerfile:../deploy/docker/Dockerfile.backendargs:JAR_FILE:service-product/target/service-product-1.0.0-SNAPSHOT.jarenvironment:TZ:Asia/ShanghaiSPRING_PROFILES_ACTIVE:devSPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR:nacos:8848SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR:nacos:8848SPRING_DATASOURCE_URL:jdbc:mysql://mysql:3306/flashsale_product?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrueSPRING_DATASOURCE_USERNAME:rootSPRING_DATASOURCE_PASSWORD:rootSPRING_REDIS_HOST:redisSPRING_REDIS_PORT:6379depends_on:-mysql-redis-nacosports:-9002:9002restart:unless-stoppedservice-inventory:container_name:flashsale-service-inventorybuild:context:../flashsale-backenddockerfile:../deploy/docker/Dockerfile.backendargs:JAR_FILE:service-inventory/target/service-inventory-1.0.0-SNAPSHOT.jarenvironment:TZ:Asia/ShanghaiSPRING_PROFILES_ACTIVE:devSPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR:nacos:8848SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR:nacos:8848SPRING_DATASOURCE_URL:jdbc:mysql://mysql:3306/flashsale_inventory?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrueSPRING_DATASOURCE_USERNAME:rootSPRING_DATASOURCE_PASSWORD:rootSPRING_REDIS_HOST:redisSPRING_REDIS_PORT:6379depends_on:-mysql-redis-nacosports:-9003:9003restart:unless-stoppedservice-order:container_name:flashsale-service-orderbuild:context:../flashsale-backenddockerfile:../deploy/docker/Dockerfile.backendargs:JAR_FILE:service-order/target/service-order-1.0.0-SNAPSHOT.jarenvironment:TZ:Asia/ShanghaiSPRING_PROFILES_ACTIVE:devSPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR:nacos:8848SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR:nacos:8848SPRING_DATASOURCE_URL:jdbc:mysql://mysql:3306/flashsale_order?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrueSPRING_DATASOURCE_USERNAME:rootSPRING_DATASOURCE_PASSWORD:rootSPRING_REDIS_HOST:redisSPRING_REDIS_PORT:6379depends_on:-mysql-redis-nacosports:-9004:9004restart:unless-stoppedservice-gateway:container_name:flashsale-service-gatewaybuild:context:../flashsale-backenddockerfile:../deploy/docker/Dockerfile.backendargs:JAR_FILE:service-gateway/target/service-gateway-1.0.0-SNAPSHOT.jarenvironment:TZ:Asia/ShanghaiSPRING_PROFILES_ACTIVE:devSPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR:nacos:8848SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR:nacos:8848depends_on:-nacos-service-user-service-product-service-inventory-service-orderports:-8080:8080restart:unless-stopped4.1 启动服务指定多个 compose 配置文件运行 start命令进行启动服务docker compose -f docker-compose.yml -f docker-compose.backend.yml start4.2 停止服务指定多个 compose 配置文件运行 stop 命令进行停止服务docker compose -f docker-compose.yml -f docker-compose.backend.yml stop4.3 重启服务指定多个 compose 配置文件运行 restart 命令进行重启服务docker compose -f docker-compose.yml -f docker-compose.backend.yml restart4.4 停止并删除所有容器指定多个 compose 配置文件运行 down 命令进行停止并删除服务docker compose -f docker-compose.yml -f docker-compose.backend.yml down4.5 重新拉起重点、常用指定多个 compose 配置文件运行 up -d 命令重新拉起服务通过现有的镜像创建容器docker compose -f docker-compose.yml -f docker-compose.backend.yml up -d这里需要补充下后端代码更新了需要重新发版进行联调也需要用到该命令只是需要加下--build告诉 docker 要重新构建镜像但在这之前别忘了重新打包下面讲下操作步骤1、后端服务重新打包执行mvn clean package -Dskiptests重新打包2、重新构建镜像并拉起容器执行docker compose -f docker-compose.yml -f docker-compose.backend.yml up -d --build5、服务测试与日志排查此时进行登录被提示用户名或密码不正确测了好几个密码admin、admin123都不正确索性重新注册个账号了。在 docker desktop 中进入指定容器内部查看日志当然也可以在本地使用 docker 命令查看指定容器内的日志。这里演示查看 user 服务容器内的日志。1、先通过 docker ps 获取容器信息列表此时能够获取到每个容器的ID和容器名称2、再通过 docker logs -f 容器名/容器ID 查看指定容器内的日志命令docker logs -f 047f20f7af3e或者docker logs -f flashsale-service-user

更多文章