标签: Docker

晴天 | 2024-03-13 | Spring 全家桶后端相关Docker

SpringBoot+Docker:高效容器化的最佳实践

首先为什么要使用Docker? Docker是一个强大的工具,它允许开发者将他们的应用程序打包到容器中,以便可以在任何平台上轻松部署和运行。当涉及到对 Spring Boot 应用程序进行 Docker 化时,每个开发人员都应该遵循一些最佳实践,以确保应用程序平稳高效地运行。 在本文中,我们将探讨这些最佳实践,并提供代码示例和说明,以帮助您对 Spring Boot 应用程序进行 Docker 化。 作为一个 java 开发者,有很多用于支持 spring-boot 应用程序的基础官方镜像,我们需要关注镜像的大小,特别是当项目变大时。 使用正确的基础镜像 当对 Spring Boot 应用程序进行 Docker 化时,为您的应用程序选择正确的基础镜像非常重要。您可能知道 Docker 中的所有镜像都有 Linux 内核的基础层,因此我们不需要将这部分添加到我们的镜像中,因为我们的基础镜像提供了您的应用程序所需的底层内核和依赖项。选择正确的基础镜像有助于确保您的应用程序在 Docker 容器中平稳高效地运行。 对于 Spring Boot 应用程序,建议使用 ...

 513 |  0 |  0 Spring 全家桶后端相关

流苏 | 2023-12-05 | 数据库MySQLDocker

为什么不建议在Docker中跑MySQL?

容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以: 数据库 MySQL 是否需要容器化? 认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下面,我们就聊一下 Docker 不适合跑 MySQL 的 N 个原因! 数据安全问题 不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。 但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对[物理机]()硬...

 528 |  0 |  0 数据库MySQL

青木 | 2023-09-06 | Spring 全家桶Docker

SpringBoot + Docker 实现一次构建到处运行

一、容器化部署的好处 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。 最重要的是一致的运行环境。Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。从而达到真正意义上的 一次构建,到处执行。 二、构建镜像 2.1、Dockerfile 接着我们开始使用 Dockerfile 来定制我们的镜像,从而达到容器化的目的。Dockerfile 的本质就是将一系列修改、安装、构建、操作的命令整合到一起,去构建一个个性化的镜像,以达到 一次构建,到处运行。 接下来我们就来构建自定义镜像。 在my-project-server模块下...

 695 |  0 |  0 Spring 全家桶Docker

一纸荒年 | 2023-08-18 | Docker

Docker数据持久化与数据共享

上篇文章的最后我们使用 Docker 部署了一个纯前端项目,但还有一个很重要的问题就是容器中产生的数据(比如 log 文件),容器一旦被删除,容器内的所有数据也就没有了,为了避免这个问题我们可以将数据存储到容器之外(比如宿主机),这样即使删除容器也不会丢失数据。一旦容器故障,我们可以重新创建一个容器,将数据挂载到容器里,就可以快速恢复。 数据存储方式 Docker 提供了以下几种存储方式: 「volume卷」 :这种方式是在宿主机文件系统分配一块专有存储区域,由 Docker 管理,并且与主机的核心功能隔离。非 Docker 进程不能修改文件系统的这一部分。 「卷是在 Docker 中持久保存数据的最佳方式」 ,它适合存储数据库数据,可挂到多个容器上 「bind mount 绑定挂载」 :这种方式是直接把宿主机目录映射到容器内,适合挂代码目录和配置文件,可挂到多个容器上 「tmpfs mount临时挂载」 :这种方式仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统,适合存储临时文件,不可多容器共享 ![...

 544 |  0 |  0 Docker

雪千寻 | 2023-08-17 | Docker

Docker从入门到部署项目

Docker概念 Docker 是一个开源的应用容器引擎,它是基于 Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。通过容器可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。并且它是完全使用沙箱机制,相互之间是隔离的,更重要的是容器性能开销极低。 Docker 作为轻量级虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优势。 Docker 从 17.03 版本之后分为 「CE(Community Edition:社区版)」 和 「EE(Enterprise Edition:企业版)」 「docker是一种容器技术,它主要是用来解决软件跨环境迁移的问题」 安装Docker Docker 可以运行在 Mac , Windows , linux 等操作系统上 以 Mac 为例 使用Homebrew...

 536 |  0 |  0 Docker

OOM | 2023-04-11 | 前端相关Docker

手摸手教你 docker+jenkins+gitlab 部署你的前端项目

学习了一周的CICD,踩了很多坑,都是泪,特此记录一下整个过程,本次项目产出效果是,git push的时候自动化直接部署到服务器上,以下是整个大致流程: 1. 本地代码push到gitlab 2. gitlab通过webhook通知到jenkins 3. jenkins拉取gitlab仓库代码,并执行shell脚本 4. shell脚本执行docker命令,打包项目 5. 安装nginx,并把打包好的dist目录映射到nginx代理目录下 6. 部署成功,访问服务器ip+端口号访问你的项目 你所需要准备的: 1. docker最基本的知识,并安装docker和docker-compose 2. linux最基本命令,知道私钥公钥生成 3. 使用过git工具 4. 你的前端项目npm run build 成功 5. 你需要一台 ram 1G的linux服务器 6. 基本应变能力,排查bug能力 1.使用docker安装jenkins...

 1383 |  0 |  0 前端相关Docker

流苏 | 2023-03-11 | MySQLDocker

MySQL适合运行在Docker中吗?

容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以: 数据库 MySQL 是否需要容器化? 认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下面,我们就聊一下 Docker 不适合跑 MySQL 的 N 个原因! 数据安全问题 不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较...

 951 |  0 |  0 MySQLDocker