Seven's blog

你不会找到路,除非你敢于迷路

简介

本文介绍了 com.spotify:dockerfile-maven-plugin 的简单使用示例。
最终达成的目标是把 docker 镜像构建集成在 maven 打包过程中,可以使用 maven 命令构建 docker 镜像。

功能相似的插件有三个:

  • com.spotify:dockerfile-maven-plugin
    本文使用的插件,已经停止更新,但功能依旧稳定。
  • com.spotify:docker-maven-plugin
    本文所用插件的同胞兄弟,官方不推荐使用,已停止更新。
  • io.fabric8io:docker-maven-plugin
    支持在 pom.xml 中配置 Dockerfile 的各项内容,也支持自定义 Dockerfile,支持操作容器,功能强大,仍在更新。

使用

以 spring-boot-web 项目为例:

  1. 创建一个 spring-boot-web 项目并确保项目正常;
  2. 依据项目需要在合适的位置定制一个 Dockerfile,这里把 Dockerfile 放在了 src/main/docker 目录下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM openjdk:8-jdk-alpine
# 设置时区
ENV TZ Asia/Shanghai
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone \
&& apk del tzdata

VOLUME /tmp
# 定义变量
ARG JAR_FILE
ADD target/${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 声明服务以 tcp 协议运行在 8080 端口
EXPOSE 8080/tcp
阅读全文 »

前言

因为 PicGo 在 Linux 下的 GUI 体验并不是很好,索性自己通过 Shell 脚本和快捷键的方式实现了较好的用户体验,记录下操作流程,希望能帮到各位。

环境

笔者测试的相关软件环境如下:

  • Manjaro Linux: 5.15.46-1-MANJARO (64位)
  • Node.js: v18.3.0
  • picgo: 1.5.0-alpha.0
  • [可选] picgo-plugin-web-uploader: 1.1.1
  • picgo-plugin-autocopy: 1.0.5
  • xclip: 0.13
  • notify-send: 0.7.12
  • [可选] espeak: eSpeak text-to-speech: 1.48.03 04.Mar.14
阅读全文 »

前言

Unix 用户的配置文件一般存储在以 . 开头的文件中,这些文件被统称为 “dotfiles”。

本文讲述了一种极其优雅的通过 git 备份和恢复 dotfiles 的方法。

备份

  1. 初始化 git 仓库

    1
    2
    3
    4
    5
    6
    # 初始化 git 仓库
    git init --bare $HOME/.dotfiles
    # 指定 git 仓库和工作树路径并创建指令别名,简化操作
    cp -a .bashrc{,.bak} && echo "alias dotfiles='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> .bashrc && source .bashrc
    # git status 不显示未跟踪的文件
    dotfiles config status.showUntrackedFiles no
  2. 创建远程仓库,比如 git@github.com/seven/dotfiles

  3. 添加文件

    1
    2
    3
    4
    dotfiles add .zshrc
    dotfiles commit -m "add .zshrc"
    dotfiles remote add origin ${git_repo}
    dotfiles push
阅读全文 »

持续交付 36 讲

持续交付是提升软件交付速率的一套工程方法和一系列最佳实践的集合。它的关注点可以概括为:持续集成构建、测试自动化和部署流水线。
持续交付最核心的几个部分包括:配置管理、环境管理、构建集成、发布及监控、测试管理。

基本概念

持续集成、持续交付和持续部署的关系

  • 持续集成

    从编码到构建再到测试的反复持续过程。“持续集成”一旦完成,代表产品处在一个可交付但并不是最优的状态。

  • 持续交付

    在“持续集成”之后,获取外部对软件的反馈,再通过“持续集成”进行优化的过程叫作“持续交付”。“持续交付”是“持续集成”的自然延续。

  • 持续部署

    将可交付的产品,快速且安全地交付用户使用的一套方法和系统。它是“持续交付”的最后一公里。

“持续交付”是一个承上启下的过程,它使“持续集成”形成闭环,有了实际业务价值;又为将来达到“持续部署”的高级目标做好了铺垫。

持续交付的价值不仅仅局限于简单的提高产品交付的效率,它还通过统一标准、规范流程、工具化、自动化等等方式,影响着整个研发生命周期。

阅读全文 »
0%