【云原生】1.5 Docker 进阶实战

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 创建一个redis (mkdir redis),然后打开 redis(cd redis),准备好配置文件(vi redis.conf),输入 :wq 退出并保存。redis使用自定义配置文件启动(记得要添加安全组)

  哈喽~大家好呀,到现在目前为止我们已经学习了4篇文章了,这篇呢我们就开始实战了。


一、创建Java应用

我们在 Spring 的官网下载配置(如下图所示,记得添加 web 与 sql),然后我们用 IDEA 来打开

image.gifimage.png

二、 部署redis

我们这里要安装 redis,输入指令 docker pull redis,我们打开到 data (cd data)中,然后创建一个 redis (mkdir redis),然后打开 redis(cd redis),准备好配置文件(vi redis.conf),输入 :wq 退出并保存。

redis使用自定义配置文件启动(这里有个细节,记得要添加安全组)

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

image.gif

image.png

这时我们要使用一个工具——RedisDesktopManager,输入name、host、port、测试一下,ok,没问题。

image.png

三、redis设置密码访问

和我们上面一样,先配置文件(vi redis.conf),然后使用命令 requirepass abc123abc

格式:requirepass + 密码,输入 :wq 退出并保存

image.png

🎉 然后我们重启一下,输入重启指令

docker restart myredis

image.gif

我们再来打开工具 RedisDesktopManager 重新测试一下,发现连不上了,没错这时我们需要密码了。重新 Connect to Redis Server,再次测试一下。

image.png

四、统计访问人数场景

🎄我们这里打开 IDEA,在 application.properties 配置 host 与 password,附上代码

spring.redis.host=139.198.175.74
spring.redis.password=abc123abc

image.gif

🎄创建 CounterController.java 文件,写入代码

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CounterController {
    @Autowired
    StringRedisTemplate redisTemplate;
    @GetMapping("/hello")
    public String count(){
        Long increment = redisTemplate.opsForValue().increment("count-people");
        return "有 【"+ increment +"】 人访问了这个页面";
    }
}

image.gif

完成之后,在浏览器的地址栏输入 localhost:8080/hello,(hello 是 @GetMapping("/hello") 里面设置的地址),我们看看效果。

75a73e4fb6b24ee59763eb6705f584a9.gif

五、Dockerfile 构建任意应用镜像

我们之前运行 java,是怎样的呢?以 java 为例,

    • SpringBoot 打包成可执行 jar
    • 把jar包上传给服务
    • 服务器运行 java -jar

    也就是说我们在要安装环境在运行,如何我们在另一台主机运行,我们还要安装环境,非常麻烦。

    所以我们有没有这样的一个东西,能让我们其他主机不用安装环境也能运行。

    我们用 IDEA 在我们之前的项目里面新建个文件叫 Dockerfile,写入代码:

    FROM openjdk:8-jdk-slim
    LABEL maintainer=leifengyang
    COPY target/*.jar   /app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]

    image.gif

    🎉新建个文件夹,然后把 Dockerfile 与 jar 包上传。

    image.gifimage.png

    🎉然后我们开始构建镜像

    docker build -t java-demo:v1.0 .

    image.gifimage.png

    image.gif

    🎉构建之后我们再启动镜像

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    image.png

    然后我们再地址栏输入 “主机号 : 8080/hello” ,我们所有人就都能访问了(记得设置一下安全锁)

    六、应用分享与启动

    如何分享镜像?

    💎登录docker hub

    docker login

    image.gif

    💎给旧镜像起名

    docker tag java-demo:v1.0  leifengyang/java-demo:v1.0

    image.gif

    💎推送到 docker hub

    docker push leifengyang/java-demo:v1.0

    image.gif

    💎别的机器

    docker pull leifengyang/java-demo:v1.0

    image.gif

    💎别的机器运行

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    💎启动应用容器

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    好了,截止到这里我们的 Docker 基础部分已经全部讲完了,下一篇预告 2.1 Kubernetes-基础概念。


    相关文章
    |
    17天前
    |
    Cloud Native Serverless API
    微服务架构实战指南:从单体应用到云原生的蜕变之路
    🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
    微服务架构实战指南:从单体应用到云原生的蜕变之路
    |
    17天前
    |
    监控 Kubernetes 安全
    还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
    蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
    还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
    |
    4月前
    |
    运维 监控 数据可视化
    容器化部署革命:Docker实战指南
    容器化部署革命:Docker实战指南
    |
    3月前
    |
    供应链 测试技术 开发者
    用 Docker 轻松部署 ERPNext 15:多场景实战指南
    ERPNext 15 是一款功能全面的开源企业资源规划系统,结合 Docker 容器化部署,具备高效、灵活、低成本等优势。适用于小微企业数字化起步、多分支机构协同办公、开发者测试环境搭建、短期项目管理及企业内部培训等多种场景。模块化设计支持按需扩展,满足不同规模企业需求,是实现高效企业管理的理想选择。
    用 Docker 轻松部署 ERPNext 15:多场景实战指南
    |
    4月前
    |
    安全 Java Docker
    Docker 部署 Java 应用实战指南与长尾优化方案
    本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
    217 3
    |
    5月前
    |
    关系型数据库 MySQL 数据库
    Docker Compose-实战
    Docker Compose-实战
    163 5
    |
    6月前
    |
    Ubuntu Linux Docker
    Docker容器的实战讲解
    这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
    192 27
    |
    8月前
    |
    Cloud Native 安全 Serverless
    云原生应用实战:基于阿里云Serverless的API服务开发与部署
    随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
    |
    10月前
    |
    关系型数据库 应用服务中间件 PHP
    实战~如何组织一个多容器项目docker-compose
    本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
    245 3
    实战~如何组织一个多容器项目docker-compose
    下一篇
    oss教程