bashible docker集成使用

bashible 是一个很不错的基于bash 的dsl 框架,类似ansible,但是简单使用也比较灵活,以下是集成docker 的使用
以下是一个集成openresty 的demo

集成bashible 的openresty 镜像

目的很简单,就是集成bashible到openresty 镜像中,方便测试以及生成配置,然后我们可以通过
docker 的multi stage 进行配置copy减少镜像的大小

  • Dockerfile
FROM openresty/openresty:1.15.8.3-stretch
RUN apt update && apt-get install -y wget net-tools
RUN wget https://raw.githubusercontent.com/mig1984/bashible/master/bashible
RUN wget https://raw.githubusercontent.com/mig1984/bashible/master/bashible.edit.bash
RUN wget https://raw.githubusercontent.com/mig1984/bashible/master/bashible.net.bash
RUN wget https://raw.githubusercontent.com/mig1984/bashible/master/bashible.template.bash
RUN wget https://raw.githubusercontent.com/mig1984/bashible/master/bashible.timeout.bash
RUN chmod 755 bashible && chmod 755 bashible.edit.bash && chmod 755 bashible.net.bash && chmod 755 bashible.template.bash && chmod 755 bashible.timeout.bash
RUN mv bashible /usr/local/bin && mv bashible.edit.bash /usr/local/bin && mv bashible.net.bash /usr/local/bin && mv bashible.template.bash /usr/local/bin && mv bashible.timeout.bash /usr/local/bin
CMD ["sh", "-c", "cd /opt/content/ && bashible t.bash && /usr/bin/openresty -g ‘daemon off;‘"]
  • 简单说明
    这个镜像约定bashible的配置都在/opt/content 中

简单使用

  • 项目结构
├── Dockerfile
├── Dockerfile-multi
├── README.md
├── content
│ ├── index.html.tpl
│ ├── js
│ │ ├── bar.js
│ │ └── foo.js
│ ├── parts
│ │ ├── body.tpl
│ │ └── head.tpl
│ └── t.bash
└── docker-compose.yaml
  • 说明
    content 中为基于bashible 的nginx index.html 生成,使用了bashible 提供的模板技术
    t.bash:
use template
# set some variables for the template
FOO_OR_BAR=bar
@ Creating index page for home
  - output_to /usr/local/openresty/nginx/html/index.html template index.html.tpl

index.html.tpl:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>bashible</title>
    $( template parts/head.tpl )
</head>
<body>
    $( template parts/body.tpl )
  </body>
</html>

head.tpl index 的头部,使用了cat 引入content

<script type=‘text/javascript‘>
  $( cat js/$FOO_OR_BAR.js )
</script>

body.tpl 使用了系统函数date

<div style="text-align:center">
<h1> Now is $( date ) </h1>
</div>
  • 多阶段集成使用
FROM dalongrong/openresty:bashible as build
WORKDIR /opt
COPY content/ /opt/content
RUN cd /opt/content/ && bashible t.bash
?
FROM openresty/openresty:alpine
COPY --from=build /usr/local/openresty/nginx/html/index.html /usr/local/openresty/nginx/html/index.html
  • docker-compose 文件
version: "3"
services: 
  web:
   build: 
    context: .
    dockerfile: Dockerfile-multi
   volumes: 
   - "./content/:/opt/content/"
   ports: 
   - "80:80"

说明

使用bashible 作为一个配置管理工具简洁、高效,同时集成在容器中也是一个很不错的选择

参考资料

https://hub.docker.com/repository/docker/dalongrong/openresty
https://hub.docker.com/repository/docker/dalongrong/bashible
https://github.com/mig1984/bashible

原文地址:https://www.cnblogs.com/rongfengliang/p/12590264.html

时间: 2024-10-10 21:43:57

bashible docker集成使用的相关文章

部署Jenkins+docker集成环境

环境: 主机(mac osx)和虚拟机(Ubuntu 16.04) mac osx系统,运行Jenkins Ubuntu16.04系统,运行docker(用Ubuntu14.04镜像创建一个docker) tips: 1.Jenkins运行在哪个环境都可以(这里运行在osx系统) 2.Jenkins创建的node(slave),launch slave agents on Unix machines via SSH(通过SSH远程登陆Unix,这里的Unix环境是用Ubuntu14.04镜像创建

spring-boot项目的docker集成化部署(一)

目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker集成化部署 前言 据说流行的微服务和docker一起,更配哦!接下来,使用简单spring-boot项目演示docker的集成化部署的案例,在看过微笑的博客觉得不过瘾,自己动手,下面的方案与Devops的方式比较接近:希望搭建理解这种思路. 基本思路与方案 开发者push到git服务器 Jenkin

spring-boot 和 docker 集成

描述 java 的 Spring是一个很火的框架,Spring boot 这个也不用说了,Docker 近年也很火热, 本文就介绍下我在 Spring boot + Docker的集成一些经验 :) 其实官网已经有一个手册介绍了 这里 可能会用到的东西 JDK 1.8 或者更高 Maven 3.0+ 或者是 Gradle 2.3+ 一个IDE或者一个记事本 一个本地或者远程的Docker服务 充满好奇心的你 对没错,你至少需要一个Docker,可以安装在本地也可以安装在服务器上,具体安装方式请移

Openstack+KVM+Ceph+Docker 集成云计算中

对于以基础架构即服务形式部署和设计云计算产品的公司而言,数据复制和存储机制仍然是确保为客户提供完整性和服务连续性的实际前提条件.云计算提供了一种模型,其中数据的位置没有其他基础架构模型中那么重要(比如在一些模型中,公司直接拥有昂贵的存储硬件).Ceph 是一个开源.统一.分布式的存储系统,提供了一种便捷方式来部署包含商用硬件.低成本且可大规模扩展的存储平台.了解如何创建一个 Ceph 集群(从单一点实现对象.块和文件存储).Ceph 的算法和复制机制,以及如何将它与您的云数据架构和模型相集成.作

graphql-yoga 项目简单使用&amp;&amp;集成docker

graphql-yoga 是一个实现了grahql的框架,使用简单,便捷 具体源码参考github https://github.com/rongfengliang/graphql-yoga-dockerdemo 安装框架 yarn yarn init -y yarn add graphql-yoga 项目结构 项目包好了docker jenkins docker-compose && 基本graphql-yoga demo ├── Jenkinsfile ├── README.md ├─

Docker on Microsoft Azure

Docker蓬勃发展,如日中天.微软自然也不甘落后,且不说即将发布的.支持Docker技术的Windows Nano Server和Windows Server 2016.我们来看看在Microsoft Azure上如何使用Docker吧. Microsoft Azure目前并没有发布独立的Container Service,而是将Docker集成到VM和CLI中.这样,用户就可以通过是用CLI来创建和管理Docker了.看起来有点简陋不是?没关系,有胜于无.再说了,相信微软不会让大家失望的.顺

docker容器网络通信原理分析

概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求.而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信.而本文将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker. docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以

基于OpenStack+Docker设计与实现CI/CD

基于Docker容器技术的OpenStack研发.测试.运维及其相关的CI/CD.DevOps等活动.思想是相通的,读者可以取其可用部分用于自己的业务需求中. IaaS云和容器云不是可有可无.相互竞争的关系,而是相互弥补彼此缺陷的关系.容器改变了应用部署和管理的模式,众所周知,IaaS云通过提供基本的计算.存储和网络来运行虚拟机(VM),在IaaS(基础设施即服务)之上,还有PaaS(平台即服务).SaaS(软件即服务).CaaS(容器即服务).OpenStack作为一个IaaS云的基础设施管理

跨主机网络概述 - 每天5分钟玩转 Docker 容器技术(48)

前面已经学习了 Docker 的几种网络方案:none.host.bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题.本章的重点则是讨论跨主机容器间通信的方案. 跨主机网络方案包括: docker 原生的 overlay 和 macvlan. 第三方方案:常用的包括 flannel.weave 和 calico. docker 网络是一个非常活跃的技术领域,不断有新的方案开发出来,那么要问个非常重要的问题了: 如此众多的方案是如何与 docker 集成