docker部署typecho

最近弄了一台azure的学生机,虽然配置低了点,但是可以免费使用一年,用来部署一个博客是绰绰有余的。

因为我使用的博客一直都是typecho,所以我这里记录下我使用docker部署typecho的全流程。

我使用的服务器是Ubuntu系统,和CentOS差别不是很大。

一、安装docker

无脑一键安装命令(只要你的系统支持curl命令)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

设置启动

# 设置开机自启
systemctl enabel docker
# 启动服务
systemctl start docker
# 重启服务
systemctl restart docker
# 停止服务
systemctl stop docker
# 取消开机自启
systemctl disable docker
# 查看状态
systemctl status docker

安装docker-compose

docker-compose能使我们更加方便的一次性启动多个容器

我们这里也是通过curl进行安装,docker-compose各版本地址github

安装方式:

# 下面的仅适用x86_64的机器
curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 以下是通用的命令(主要加上了环境变量自动去获取对应架构的包)
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

上述的下载地址和安装地址可以根据自身条件进行修改。

安装完后需要将安装目录的权限设置可执行:

chmod +x /usr/local/bin/docker-compose

创建软连接(你也可以直接将软件安装到/usr/bin/目录下,这里相当于弄了个快捷链接过去):

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

docker-compose --version

部署typecho

目录创建

首先按照以下目录结构创建目录/文件(主要是统一管理):

blog
  docker-compose.yml
  mysql
  mysql.env
  typecho

编写docker-compose

docker-compose内容如下:

version: '2'
services:
  typecho:
    image: joyqi/typecho:1.2.0-php7.4-apache
    restart: always
    ports:
      - 80:80
    volumes:
      - /usr/local/blog/typecho:/app/usr
    environment:
      - TYPECHO_SITE_URL=http://azure.topzhang.cn
    networks:
      - zhangheng
  db:
    image: mysql:5.7.21
    restart: always
    ports:
      - 13306:3306
    volumes:
      - ./mysql:/var/lib/mysql
    env_file:
      - mysql.env
    networks:
      - zhangheng

networks:
    zhangheng:
      # 该网络是外部的网络
      driver: bridge              

注意空格格式,docker-compose内部的写法有兴趣可以自行了解。另外我们配置了network选项这里我们就可以将mysql数据库的配置名db(不是固定的,可随意命名)作为mysql的访问ip了。即我们如果配置启动完后可以通过localhost:<端口>访问,我们还可以使用db:<端口访问>。注意这里只能在docker内部内网访问。后续我们在typecho上配置数据库地址的时候可以就使用db

编写mysql环境变量

# MySQL的root用户默认密码,这里自行更改
MYSQL_ROOT_PASSWORD=123456
# MySQL镜像创建时自动创建的数据库名称
MYSQL_DATABASE=typecho
# MySQL镜像创建时自动创建的用户名
MYSQL_USER=typecho
# MySQL镜像创建时自动创建的用户密码
MYSQL_PASSWORD=123456        

编写完上述的文件后执行以下命令启动所有服务:

docker-compose up -d

如需停止服务:

docker-compose down

注意事项:

  • 启动完服务后注意使用docker ps检查下。
  • 注意docker内外映射端口。
  • 注意文件权限。
  • 注意镜像文件是否有问题,有时候是镜像的版本不对导致的错误。可以去dockerhub上切换其他版本的镜像。
  • 注意服务器开放对应端口。
  • 注意系统防火墙是否开放端口。

最后完事成功~~。

Last modification:May 16, 2022
如果觉得我的文章对你有用,请随意赞赏