前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为bookstack制作docker image

为bookstack制作docker image

作者头像
羽翰尘
修改2019-11-26 16:32:41
8480
修改2019-11-26 16:32:41
举报
文章被收录于专栏:技术向技术向

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/bookstack_docker/

前言

制作docker image

下载二进制程序

二进制版本发布页同时下载二进制文件和源代码,并分别解压到本地。

准备初始Dockerfile

从源代码目录中复制出Dockerfile文件,放到二进制文件目录中。

动态生成配置文件

配置文件的介绍见普通安装指导, 涉及到数据库的配置、网站基本配置等。而这些配置是go语言直接读取的,所以无法用环境变量(不会替换,而是直接原样打印成字符串)。

考虑新建一个生成配置文件的脚本,使用echo命令,动态将环境变量中的内容填充到预定义字符串中,并生成配置文件。

设置CMD

经过改造之后,容器启动会麻烦一些,因为每次我们都要重新生成配置文件。而制作容器时的CMD命令不能有分号;,这意味着我们不能在一行中执行两条命令。

所以新建run.sh脚本,在其中调用generate_conf.sh生成配置文件,然后运行./BookStack开始服务。

bookstack_docker/run.sh

代码语言:txt
复制
#!/bin/bash
mkdir conf
bash ./generate_conf.sh
./BookStack

build

文件都准备好之后,就可以制作容器了。注意将用户名替换为自己的。

代码语言:txt
复制
docker build -t wenfengand/bookstack:v1.7 .

制作运行脚本

以上只是制作了容器,容器运行时的环境变量配置,挂载卷,网络配置等仍需要脚本来简化工作。

准备环境变量

使用-e参数设置容器的环境变量。

制作安装脚本

BookStack的运行依赖于mysql,需要一个数据库初始化的过程,也就是安装过程。我们为其制作一个安装脚本。

主要思想是用自定义命令./BookStack install覆盖制作容器时的CMD设置。

制作运行脚本

运行脚本与安装脚本大致相同,将-it改为-d,并去掉自定义命令即可。

制作停止脚本

这里我们给容器进行了命名,如果停止后不删除,会影响下次使用。使用一个简单的脚本简化操作。

代码语言:txt
复制
./install.sh

测试

执行安装命令

代码语言:txt
复制
./install.sh

观察到设置数据库的过程

执行运行命令

代码语言:txt
复制
./run.sh

打开浏览器,在localhost:8181可以看到bookstack界面,用户名和密码都是admin.

TODO

  • 增加一些脚本示意
  • 将docker上传到docker hub和github
  • 给环境变量增加更多选项
  • 增加mysql容器部分
  • 增加mysql容器中文显示的链接使用mysql workbench发现如何初始化时指定了字符集,mysql docker是可以处理中文的。所以是bookstack自身安装的问题。
  • 增加uploads的文件夹挂载
  • 解决图片文件的对象存储问题(为什么保存到uploads目录而不是云端)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 制作docker image
    • 下载二进制程序
      • 准备初始Dockerfile
        • 动态生成配置文件
          • 设置CMD
            • build
            • 制作运行脚本
              • 准备环境变量
                • 制作安装脚本
                  • 制作运行脚本
                    • 制作停止脚本
                    • 测试
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档