docker搭建halo博客系统

docker搭建halo博客系统

官网

1. 安装docker

#移除旧的版本:避免安装中出现冲突导致安装失败
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
#安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源信息,使用阿里云的镜像,不配置镜像下载可能会很慢
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新 yum 缓存:
sudo yum makecache fast
#安装 Docker-ce:
sudo yum -y install docker-ce
#启动 Docker 后台服务
sudo systemctl start docker

docker -v 查看是否安装成功

2. 安装mysql(不配置数据库默认使用halo自带的H2数据库,用于生产最好还是重新安装一个数据库)

#拉取镜像
docker pull mysql:8.0.30
 
#创建目录()
mkdir -p /app/docker/mysql/data
mkdir -p /app/docker/mysql/conf 
mkdir -p /app/docker/mysql/log
 
 #启动容器
 docker run -p 3306:3306 --name mysql \
-v /app/docker/mysql/log:/var/log/mysql \
-v /app/docker/mysql/data:/var/lib/mysql \
-v /app/docker/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=1234  \
-d mysql:8.0.30

#进入mysql
docker exec -it mysql bash 
mysql -uroot -p1234

3. 创建数据库

#创建数据库 halodb
CREATE DATABASE IF NOT EXISTS halodb
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;

4. 创建工作目录,并下载统一配置文件到该目录

mkdir ~/.halo && cd ~/.halo
#下载配置文件,完成后会出现一个application.yaml的文件
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml --no-check-certificate

#修改配置文件
vi application.yaml

使用mysql需要修改配置文件,不使用mysql的话不用修改配置文件

使用mysql,修改后的配置文件:

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:

    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://172.17.0.2:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 1234

halo:

  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level
  cache: memory

注意:

​ 由于使用的是docker部署,docker容器之间没有配置网络的话是不能通过127.0.0.1环回地址访问另一个容器中的mysql容器的,需要知道mysql容器暴露的ip才行。

#查看mysql的容器名称
docker ps -a
#查看容器信息
docke inspect mysql(容器名)

​ IPAddress就是对应的id地址啦

​ 得到ip后把url中的ip,还有数据库密码替换掉就可以了

5. 拉取镜像,因为一些主题不支持高版本,所以我这里还是使用的较低版本。高版本的安装可以通过docker compose统一安装。

#拉取镜像
docker pull halohub/halo:1.5.2

docker run -it -d --name halo \             #容器名称
-p 8090:8090 \                              #配置容器到主机的端口映射   
-v ~/.halo:/root/.halo \					#数据重定向到指定目录
--restart=unless-stopped halohub/halo:1.5.2	#镜像名称

​ 安装完成后就可以通过就可以通过主机公网ip+8090端口进行访问了。如果不能访问,可以查看/root/.halo/log目录下的启动日志进行查看。

6. Nginx代理域名

docker pull nginx

# 创建挂载目录
mkdir -p ~/docker/nginx/conf
mkdir -p ~/docker/nginx/log

#容器中的nginx.conf文件和conf.d文件夹复制到宿主机
# 生成容器
docker run -it -d --name nginx -p 9960:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf ~/docker/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d ~/docker/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html ~/docker/nginx

# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx

#重新启动容器,并配置启动参数
docker run \
-p 9960:80 \
--name nginx \
-v ~/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v ~/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v ~/docker/nginx/log:/var/log/nginx \
-v ~/docker/nginx/html:/usr/share/nginx/html \
-d nginx:latest

若nginx启动成功,可以通过主机公网 ip + 9960 访问到nginx的欢迎界面。

进入 ~/docker/nginx/conf/nginx.conf 目录下修改default.conf配置文件,halo容器的端口跟mysql一样,用 docker inspect name 查看

upstream halo {
  server 172.17.0.3:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

重启容器nginx容器使配置生效。

docker restart nginx

最后就可以通过域名访问到你的博客啦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是目前比较流行的容器化技术,其优点在于方便管理和部署应用程序。而Halo博客系统是一款基于Java开发的博客系统,其部署过程比较复杂,需要安装JDK、MySQL等依赖。本文将介绍如何使用Docker部署Halo博客系统。 1. 安装Docker 首先需要在服务器上安装Docker,可以参考官方文档进行安装。 2. 创建Docker镜像 将Halo博客系统打包成Docker镜像,可以通过Dockerfile或者docker-compose.yml文件进行创建。在这里我们以Dockerfile为例。 先创建一个空目录,将Halo博客系统的jar包和配置文件拷贝到该目录下: ``` mkdir -p /opt/halo cp -r halo.jar /opt/halo/ cp -r application.properties /opt/halo/ ``` 然后创建Dockerfile: ``` FROM openjdk:8-jre-alpine MAINTAINER yourname <youremail@domain.com> ADD halo.jar /opt/halo/halo.jar ADD application.properties /opt/halo/application.properties WORKDIR /opt/halo CMD ["java", "-jar", "halo.jar", "--spring.config.location=application.properties"] EXPOSE 8888 ``` 其中FROM指定了基础镜像,ADD将jar包和配置文件拷贝到镜像中,WORKDIR指定工作目录,CMD指定应用启动命令,EXPOSE指定容器监听的端口。 使用docker build命令创建镜像: ``` docker build -t halo . ``` 其中halo为镜像名称,可以根据需要自行修改。 3. 启动容器 使用docker run命令启动容器: ``` docker run -d -p 8080:8888 --name halo-demo halo ``` 其中-d表示启动守护进程,-p将容器的8888端口映射到主机的8080端口,--name指定容器名称,halo为镜像名称。 启动成功后,在浏览器中输入http://localhost:8080访问Halo博客系统即可。 以上就是使用Docker部署Halo博客系统的步骤,相信通过这个实战,大家可以更好地了解云原生中Docker的使用和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值