【云原生】1.5 Docker 进阶实战

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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-基础概念。


    相关实践学习
    基于Redis实现在线游戏积分排行榜
    本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
    云数据库 Redis 版使用教程
    云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
    相关文章
    |
    2月前
    |
    关系型数据库 应用服务中间件 PHP
    实战~如何组织一个多容器项目docker-compose
    本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
    85 3
    实战~如何组织一个多容器项目docker-compose
    |
    2月前
    |
    存储 缓存 监控
    Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
    本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
    247 7
    |
    3月前
    |
    运维 Cloud Native 云计算
    云原生之旅:Docker容器化实战
    本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
    |
    3月前
    |
    机器学习/深度学习 数据采集 Docker
    Docker容器化实战:构建并部署一个简单的Web应用
    Docker容器化实战:构建并部署一个简单的Web应用
    |
    3月前
    |
    运维 Kubernetes Cloud Native
    云原生技术入门:Kubernetes和Docker的协同工作
    【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
    |
    3月前
    |
    Kubernetes Linux 开发者
    深入探索容器化技术——Docker 的实战应用
    深入探索容器化技术——Docker 的实战应用
    142 0
    |
    3月前
    |
    存储 Cloud Native 开发者
    深入探索容器化技术——Docker的实战应用
    深入探索容器化技术——Docker的实战应用
    59 0
    |
    3月前
    |
    存储 安全 Docker
    Docker 的实战应用与优化策略
    Docker 的实战应用与优化策略
    50 0
    |
    3月前
    |
    JavaScript Linux 持续交付
    深入探索容器化技术——Docker 的实战应用
    深入探索容器化技术——Docker 的实战应用
    74 0
    |
    3月前
    |
    Kubernetes 监控 安全
    容器化技术:Docker与Kubernetes的实战应用
    容器化技术:Docker与Kubernetes的实战应用