抽一点时间整理下部署 halo 框架的流程、相信笔记对于刚入门的伙伴会受益匪浅
首先需要一台公网服务器,需要备案,然后购买域名解析服务器
熟悉 docker 命令就可以部署 halo 博客框架啦
Docker是一个用于构建、部署和运行应用程序的开源平台。它利用容器技术来实现应用。 有以下几个特性:
- 容器: 容器是 Docker 的核心组件,它是一个封装了应用程序及其所有依赖的运行时环境。容器隔离了应用程序的文件系统、进程空间和网络,使其能够在不同环境中保持一致的行为。每个容器都是独立运行的实体,互不影响。
- 镜像: 镜像是容器的模板,它包含了一个完整的文件系统、应用程序代码、依赖和运行配置。开发者可以通过编写 Dockerfile 来定义镜像的构建过程,然后使用这个镜像创建容器。镜像可以通过 Docker Hub 或私有仓库进行共享和分发。
- 容器编排: Docker 提供了一些工具用于管理多个容器的编排,例如 Docker Compose 和 Kubernetes。这些工具可以定义容器之间的关系、依赖和扩展规则,从而实现复杂应用程序的部署和管理。
- 跨平台性: Docker 的容器可以在不同操作系统和云平台上运行,保持一致的行为。这种跨平台性使得开发、测试和部署都更加便捷。
- 快速启动和部署: Docker 容器的轻量级特性和快速启动时间使得应用程序可以在几秒钟内部署和启动,加快了开发和测试周期。
- 版本控制: Docker 的镜像可以通过版本控制进行管理,开发者可以轻松地回滚到之前的版本,保证应用程序的可靠性。
- 微服务架构支持: Docker 容器非常适合支持微服务架构,每个容器可以运行一个小而独立的服务,便于扩展和维护。
- 安全性: Docker 提供了一些安全机制,使容器之间隔离运行,从而减少潜在的安全风险。
总之,Docker 是一种现代化的应用程序交付和运维方法,使开发者能够更高效地构建、部署和管理应用程序。它在开发、测试、生产等环境中都有广泛的应用,成为现代应用开发的重要工具之一。
一、安装 Docker
首先需要在服务器安装 docker。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
这边列出了:Docker 使用文档
我在部署的过程中遇到的问题贴图
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker images #测试docker命令是否可以使用sudo正常使用
安装好 docker 后,使用 Docker 命令部署
docker run \
-it -d \
--name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
halohub/halo:2.8 \
--halo.external-url=http://localhost:8090/ \
--halo.security.initializer.superadminusername=wangyubao \
--halo.security.initializer.superadminpassword=mysql
halo 配置文件
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://gavinking.top:443/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=wangyubao
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=wangyubaodehalo
halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo
networks:
halo_network:
-- INSERT -- 30,50 Bot
二、Docker命令及用法
Docker 日常命令大全(完整详细版)
| Docker 常用命令 | 命令说明 | 具体用法 |
|---|---|---|
| docker run | 创建一个新的容器并运行一个命令 | 具体用法 |
| docker start | 启动一个或多个已经被停止的容器 | docker start 容器名称 / 容器ID |
| docker stop | 停止一个运行中的容器 | docker stop 容器名称 / 容器ID |
| docker restart | 重启容器 | docker restart 容器名称 / 容器ID |
| docker kill | 杀掉一个运行中的容器 | docker kill -s KILL 容器名称 / 容器ID |
| docker rm | 删除一个或多个容器 | docker rm -f 容器名称 / 容器ID |
| docker pause | 暂停容器中所有的进程 | docker pause 容器名称 / 容器ID |
| docker unpause | 恢复容器中所有的进程 | docker unpause 容器名称 / 容器ID |
| docker create | 创建一个新的容器但不启动它 | 具体用法 |
| docker exec | 在运行的容器中执行命令 | 具体用法 |
| docker ps | 列出容器 | 具体用法 |
| docker logs | 获取容器的日志 | 具体用法 |
| docker login | 登陆Docker镜像仓库,默认为官方仓库 Docker Hub | 具体用法 |
| docker logout | 登出Docker镜像仓库,默认为官方仓库 Docker Hub | docker logout |
| docker pull | 从镜像仓库中拉取或者更新指定镜像 | docker pull xxx 下载 xxx |
| docker search | 从Docker Hub查找镜像 | docker search 容器名称 |
| docker images | 列出本地镜像 | 检查当前所有Docker下载的镜像 |
| docker build | 命令用于使用 Dockerfile | 创建镜像 具体用法 |
| docker info | 显示 Docker 系统信息,包括镜像和容器数 | docker info |
| docker version | 显示 Docker 版本信息 | docker version |
| 问题 | 解决 |
|---|---|
| 文件或者目录不能删除 | rm: cannot remove 'xxx': Is a directory |
| 可以采用强制删除的办法 | rm -rf xxx #递归删除文件名或目录 |
| 使用管理员权限删除 | sudo rm -d #-d删除文件夹 |
| 重启 | systemctl restart docker |
查看当前占用端口
netstat -tanlp
杀死进程
kill 占用端口进程的PID
docker rmi xxxx 删除本地镜像
生成容器
docker run --name nginx -p 8090:80 -d nginx
将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
三、docker安装mysql之后如何配置
Docker 容器是一种轻量级的虚拟化技术,它在操作系统层面将应用程序及其依赖项包装在完整的文件系统中,以便于移植和部署。MySQL 是一个流行的开源数据库,使用 Docker 部署 MySQL 可以简化数据库环境的安装和管理。然而,Docker 容器与传统的虚拟机不同,安装和配置过程可能需要一些额外的步骤。在本文中,我们将介绍如何在 Docker 容器中安装和配置 MySQL。
1、安装 MySQL 镜像
- 打开终端(Terminal)或控制台(Console),确保 Docker 已经正确地安装在系统中。
- 运行以下命令以从 Docker Hub 中下载 MySQL 镜像:
docker pull mysql
这将从 Docker Hub 中下载最新版本的 MySQL 镜像。可以通过 docker images 命令查看已安装的镜像列表。
二、创建 MySQL 容器
- 运行以下命令创建一个 MySQL 容器:
docker run --name=mysql-container-name -e MYSQL_ROOT_PASSWORD=mysql -d mysql:latest
其中,mysql-container-name 可以是容器的名称,your_password 是 MySQL 的 root 用户的密码。该命令将创建一个 MySQL 容器,并将其设置为在后台运行。
- 检查容器是否已经成功创建:
docker ps
该命令将列出所有正在运行的容器。确保刚刚创建的 MySQL 容器正常运行。
三、配置 MySQL 容器
- 进入 MySQL 容器:
docker exec -it mysql-container-name bash
其中,mysql-container-name 是容器的名称。
- 连接到 MySQL 服务器:
mysql -u root -p
输入刚刚设置的 root 密码。
- 创建新用户并授予权限:
CREATE USER 'wangyubao'@'%'IDENTIFIED BY 'mysql';GRANT ALL PRIVILEGES ON . TO 'wangyubao'@'%'WITH GRANT OPTION;FLUSH PRIVILEGES;
其中,_username 是要创建的新用户的名称,_password 是该用户的密码。
- 修改 MySQL 配置文件:
| vim /etc/mysql/my.cnforvim /etc/my.cnf |
|---|
在 MySQL 配置文件的 [mysqld] 标签下添加以下内容:
| [mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci |
|---|
这将设置 MySQL 的字符集和排序规则。
- 重启 MySQL:
service mysql restart
现在,MySQL 容器已经安装并正确配置,可以通过相应的客户端工具连接到 MySQL 服务器。
四、docker 安装 nginx 之后如何配置
无法使用 vi/vim 怎么办?
先更新:apt-get update
再安装:apt-get install vim
安装工具源
sudo yum -y install epel-release
docker-compose依赖python,安装 python-pip 模块
sudo yum install python-pip
下载docker-compose 安装包
重命名工具 docker-compose 名称,并移动到系统可执行目录
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
修改文件的可执行属性
chmod +x /usr/local/bin/docker-compose
验证:docker-compose -version