Docker部署typecho(cloudflare tunnel)

引言

LNMP的安装太麻烦了,而且宝塔面板有问题也很难找到解决方法,nginx设定和cloudflare 比也比较麻烦,更别说需要一个ip地址,所以本文利用docker+cloudflare的方法来部署

部署

docker-compose.yaml

---

networks:
  frontend:
    external: true
  backend:
    external: true

volumes:
  sql-database-typecho:
    driver: local


services:
  mariadb:
    image: mariadb:latest
    container_name: typecho-mariadb
    restart: unless-stopped
    volumes:
      - sql-database-typecho:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
    env_file:
      - .env
    networks:
      - backend

  typecho:
    image: joyqi/typecho:1.2.1-php8.0-apache
    # image: joyqi/typecho:nightly-php8.2-apache
    container_name: typecho-xxxx-server
    expose:
      - 80
    restart: unless-stopped
    environment:
      - TIMEZONE="Asia/Shanghai"
      # - TYPECHO_INSTALL=1 # Set to 1 if you want to run installation script automatically.
      - TYPECHO_DB_HOST=mariadb
      - TYPECHO_DB_USER=${MYSQL_USER}
      - TYPECHO_DB_PASSWORD=${MYSQL_PASSWORD}
      - TYPECHO_DB_FILE=sql-database-typecho
      - TYPECHO_DB_DATABASE=${MYSQL_DATABASE}
      - TYPECHO_DB_CHARSET=utf8mb4 # default: utf8(for pgsql) or utf8mb4(for mysql)
      - TYPECHO_SITE_URL=https://blog.ainp.gay

    volumes:
      # - ./app/usr:/app/usr
      # - ./app/usr/plugins:/app/usr/plugins
      # - ./app/usr/themes:/app/usr/themes
      # - ./app/usr/uploads:/app/usr/uploads
      - ./plugins:/app/usr/plugins
      - ./themes:/app/usr/themes
      # - ./uploads:/app/usr/uploads
    depends_on:
      - mariadb

    networks:
      - frontend
      - backend

因为牵扯到密码等隐私信息特引入.env 环境文件,大概情况如下,你可以根据自己的喜好来设置自己的
.env

MYSQL_DATABASE=DATABASE_name_xxxx
MYSQL_USER=DATABASE_user_xxxx
MYSQL_PASSWORD=xxxx_password
MYSQL_ROOT_PASSWORD=xxxx_password

有个问题要注意:typecho最新的镜像joyqi/typecho:nightly-php8.2-apache部署完毕后无法打开文章详情内容,只能回滚到上一个版本joyqi/typecho:1.2.1-php8.0-apache
主题选择的是Facile, 请下载解压后放入自己建的文件夹./themes 下。
插件安装了评论审查,安装的是百度的
BaiduTextCensor
如果你能从网上找到,你可以自己找,找不到可以利用我收藏的这个,我自己放到我的文件服务器了。也是下载解压后放入自己建立的文件夹./plugins
插件也安装了一个typecho 经典编辑器,和上面一样。你可以自己在网上找,或者下载我收藏的
MEditor
,也是下载解压到./plugins

cloudflare tunnel 域名设置可以参考文章最后Portainer的设置,直接使用同一个隧道即可

设置

部署成功设置域名后,直接在网页地址栏里输入 https://yourdomain.com
0dc81928-c579-4335-8c33-7e9947bad87d.jpg
8d503539-3430-4848-861f-91e05e45f7a9.jpg
这个地方要注意,其他设置请按照上面.env 环境设置文件里填写就可以了,但红方框里的ip地址哪里来的呢?有两个方法,第一,使用 如下命令

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' typecho-mariadb

其中的typecho-mariadb 是docker-compose 内数据库的容器名,请参看上面的docker-compose.yaml,第二个方法,请看下面图片的红方框
1bb18c18-8da9-4020-8cff-b6fd3e471be5.jpg
a4160638-f74b-4973-86a8-efec7a7bb7b9.jpg
这个请填写自己的信息,用户名,密码,邮箱
dd893727-eb66-4430-8473-23638b270610.jpg
到此,基本的typecho 安装成功了。
点击"点击这里访问您的控制面板"
0f32bd54-dc58-4e9f-8341-b73536b99564.jpg
0ad3def4-3368-4a20-9c81-39d04a440b72.jpg
a81fe092-c584-4a2d-bbbb-c6e651ac8cd3.jpg
0e5fd3ca-9172-45a0-833f-c3e4b508591a.jpg
0af47f4f-e83b-4bde-8f5b-3b3f3f3308ba.jpg
上述信息的填写需要去百度下面的网站去申请填写
百度Ai控制台获取 AppID、API Key、Secret Key
伪静态的设置如下:
4b7a8db4-98d4-42fd-ba47-689476305d53.jpg
至此,大功告成!

参考

Docker 安装
利用Cloudflare隧道来访问Portainer(cloudflare tunnel portainer)