docker-compose 编排技术搭建 solo 个人博客

本贴最后更新于 965 天前,其中的信息可能已经沧海桑田

1. 安装 docker

  • CentOS
yum install docker
yum install docker-compose

2. 获取证书

3. 修改配置文件

3.1 配置 Nginx

  • 编辑 nginx/conf/nginx.conf 文件
  • 将所有 dduan.site 替换为您自己的站点
  • 然后修改下述两块证书文件名称(路径不用改,直接改证书名即可)
  ssl_certificate /etc/nginx/conf.d/dduan.site/1_dduan.site_bundle.crt;
  ssl_certificate_key /etc/nginx/conf.d/dduan.site/2_dduan.site.key;

3.2 配置 docker-compose

  • 编辑 docker-compose.yml 文件,按照**#** 后面的备注进行修改
[root@prometheus docker-compose-solo]# cat docker-compose.yml 
version: "2"

services:
  mysql:
    container_name: mysql
    image: mysql:5.7
    restart: always
    volumes:
      # MySQL数据存放地址
      - ./mysql/data:/var/lib/mysql
    ports:
      # 6603代表宿主机端口,3306代编容器的端口
      - "6603:3306"
    environment:
      # mysql的root账号密码
      MYSQL_ROOT_PASSWORD: "adminadmin"
    # 在这里配置mysql的全局参数  
    command: --max_allowed_packet=32505856
  solo:
    # 直接使用最新版本的solo镜像
    container_name: solo-docker-compose
    image: b3log/solo:latest
    restart: always
    ports:
      # https部署的方式不需要修改此处
      - "8090:8090"
    environment:
      RUNTIME_DB: "MYSQL"
      JDBC_USERNAME: "root"
      JDBC_PASSWORD: "adminadmin"
      JDBC_DRIVER: "com.mysql.cj.jdbc.Driver"
      # 此处,因为solo跟mysql同为docker容器,所以可以直接使用容器名 + 容器端口来访问
      JDBC_URL: "jdbc:mysql://mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    # 按照solo官方要求,在solo启动之初,配置solo的域名、端口,如果是本地测试的话,将host改为localhost即可
    command: --listen_port=8090 --server_port= --server_scheme=http --server_host=localhost
  nginx:
    container_name: nginx
    image: nginx:latest
    restart: always
    ports:
      - "90:80"
      - "443:443"
#    volumes:
      # 映射nginx目录到docker容器中
#      - "./nginx/conf:/etc/nginx/conf.d"
      # 映射服务器的证书目录到docker容器中
#      - "/docker/solo/https/cert/ws.site:/etc/nginx/conf.d/ws.site"
      # 映射www目录到docker容器中,后期您可以在这里部署自己的静态站点或者php站点
#      - "./nginx/www/:/var/www/"

4. 启动

  • 启动命令
docker-compose up -d
  • 停止命令
docker-compose down
  • 查看 solo 日志,查看 Nginx 日志,只需要 solo 改为 Nginx
docker logs -f solo

5. 建数据库

  • 进入 MySQL 容器
docker exec -it mysql bash
  • 登录 MySQL
mysql -uroot -pXXX
  • 创建 solo 数据库
create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 退出数据库和容器,执行 exit 命令

7. 注意事项

  • docker-compose 只是一个 docker 容器的编排工具,本质还是 docker 容器在运行
  • 执行 docker-compose 命令需要在 docker-compose.yml 所在目录执行
  • 每一次命令 docker-compose 启动的时候,都会自动拉取最新 solo 的镜像,所以自动更新非常简单
  • 数据备份问题,docker 容器死亡的时候,容器内数据会自动清除,除非我们使用 volumes 构建映射关系,这里我只将最重要的 mysql 数据库文件映射在 mysql/data 目录下

8. 完整配置文件

GitHub:https://github.com/dadeity/solo-docker-compose.git

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...