使用Docker定制化自己博客基础环境

- 无非就是在造重复的轮子啦OvO

前言

本文将主要介绍 为什么选用dockerdocker-compose作为搭建本站的基础环境的原因及其详细方法。提供一些思路给建站初学者。

起因

最初是为了解决环境的问题。从5年前野路子学来的lnmp.org一键搭建(目前似乎已经被收购?),到宝塔面板一键部署环境。似乎(不是)都是一个很好的选择。毕竟都是人家已经写好的嘛= =,可供自己定制化发挥的空间太小。你所使用的功能,都是他们已经高度集成化模块化一键化懒人化的。况且他们的产品定位大多是服务于政企网站。实现低运维的愿景。这与个人博客的 技术选型激进性高可折腾性的目标背道而驰的XD。so自己动手,丰衣足食!

实现目标

用于快速的构建常用开发语言所需要的运行时或开发环境(基于服务)。并且能统一管理各服务的状态,轻量化配置服务,简化数据备份流程,方便本地调试及跨平台迁移、部署。

已实现的服务:

  • Nginx/Caddy – Web服务器
  • PHP(Only FPM) – 世界上最好的语言(确信)
  • MySQL – 数据库
  • Redis – 缓存
  • Gitea – 代码托管
  • Portainer – Docker管理工具
  • phpMyAdmin – 数据库管理工具

工具介绍及其安装

为什么使用docker及其docker-compose?

在使用docker之前,我们来介绍一下docker和docker-compose的概念。

什么是Docker?

容器是在主机上运行的沙盒进程,与该主机上运行的所有其他进程隔离。 这种隔离利用了内核命名空间和 cgroup,这些功能在 Linux 中已经存在很长时间了。 Docker 使这些功能变得平易近人且易于使用。 总而言之,容器:

  • 是图像的可运行实例。 您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。
  • 可以在本地机、虚拟机上运行,也可以部署到云端。
  • 是可移植的(并且可以在任何操作系统上运行)。
  • 与其他容器隔离并运行自己的软件、二进制文件、配置等。 如果您熟悉 chroot,那么可以将容器视为 chroot 的扩展版本。 文件系统来自图像。 然而,容器增加了使用 chroot 时不可用的额外隔离。

– 来自Docker官方文档

什么是Docker-compose

Docker-Compose 是一个帮助您定义和共享多容器应用程序的工具。 使用 Compose,您可以创建一个 YAML 文件来定义服务,并且使用单个命令就可以启动或拆除所有内容。 使用 Compose 的一大优点是您可以在文件中定义应用程序堆栈,将其保存在项目存储库的根目录中(现在是版本控制的),并轻松地让其他人为您的项目做出贡献。 有人只需要克隆您的存储库并使用 Compose 启动应用程序。 事实上,您现在可能会在 GitHub/GitLab 上看到不少项目正是这样做的。

– 来自Docker官方文档

docker的安装

安装的详细说明可参考官方文档

快速安装:在安装前确保已经卸载了旧版本的docker。且假定操作系统为Ubuntu/Debian/CentOS

Tips: 鉴于国内网络环境,如果遇到下载缓慢问题。你使用国内镜像源安装docker,例如移步到北京外国语大学的镜像源

1
2
3
4
5
6
# 可选,设置镜像源
export DOWNLOAD_URL="https://mirrors.bfsu.edu.cn/docker-ce"
# 如您使用 curl
curl -fsSL https://get.docker.com/ | sudo -E sh
# 如您使用 wget
wget -O- https://get.docker.com/ | sudo -E sh

docker-compose的安装

可参考Docker-compose安装-官方文档

快速安装:使用包管理器。

1
2
3
4
# Ubuntu/Debian
sudo apt install docker-compose
# CentOS
sudo yum install docker-compose

使用docker-compose构建基础环境

这里开始介绍如何使用docker-compose构建基础环境。

代码拉取

1
git clone https://git.cloudorz.com/mt/server.git --depth=1

服务配置

这里需要配置一些服务的配置文件。这里以Caddy为例。

启动服务

按需启动服务。这里以启动Caddy+PHP+MySQL+phpMyAdmin为例。

1
docker-compose up -d caddy php-fpm-82 mysql phpmyadmin

随后查看服务状态

1
docker-compose ps
辽ICP备18009435号-1
Hugo 强力驱动
主题 StackJimmy 设计