1、准备工作
环境准备:
docker
、docker-compose
在准备好的空文件夹下创建目录结构如下:
docker-compose.yml
- ghost
config.js
- content
- nginx
Dockerfile
nginx.conf
- mysql
- config
my.cnf
- data
Dockerfile
start.sh
stop.sh
这里需要用到3个基础镜像,ghost
、nginx
和mysql
。
ghost
镜像直接拉取并运行:
docker run -itd --name ghost ghost
修改对应的时间
docker cp /usr/share/zoneinfo/Asia/Shanghai ghost:/etc/localtime
docker cp /usr/share/zoneinfo/Asia/Shanghai ghost:/etc/timezone
打包成新的镜像my_ghost:1.0
:
docker commit -m'ghost modify date' -a='vilce' ghost my_ghost:1.0
同样处理nginx
镜像为my_nginx:1.0
,mysql
不用动,删除无用的容器ghost
和nginx
。
接下来分别进行配置文件修改,首先是ghost
的config.js
,内容如下:
var path = require('path'),
config;
config = {
production: {
url: 'http://mytestblog.com',
mail: {},
database: {
client: 'mysql',
connection: {
host: 'mysql',
user: 'ghost',
password: 'ghost',
database: 'ghost',
port: '3306',
charset: 'utf8'
},
debug: false
},
paths: {
contentPath: path.join(process.env.GHOST_CONTENT,'/')
},
server: {
host: '0.0.0.0',
port: '2368'
}
}
};
module.exports = config;
其中,mysql
的连接根据自己的情况进行修改。
然后是nginx
的nginx.conf
,内容如下:
worker_processes 1;
events {worker_connections 1024;}
http {
server {
listen 80;
location / {
proxy_pass http://vilce-ghost:2368;
}
}
}
需要注意的是,这里的vilce-ghost
是指定的容器名。
最后是mysql
的my.conf
,内容如下:
[mysqld]
character-set-server=utf8mb4
default-time-zone='+8:00'
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500
配置文件准备好后,对应的docker-compose.yml
内容如下:
version: "3"
services:
ghost-app:
image: my_ghost:1.0
container_name: vilce-ghost
ports:
- "2368:2368"
volumes:
- /Users/vilce/Desktop/vilceApplication/vilce/ghost/config.js:/var/lib/ghost/config.production.js
- /Users/vilce/Desktop/vilceApplication/vilce/ghost/content:/var/lib/ghost/content
nginx:
image: my_nginx:1.0
container_name: vilce-nginx
depends_on:
- ghost-app
ports:
- "80:80"
volumes:
- /Users/vilce/Desktop/vilceApplication/vilce/nginx/nginx.conf:/etc/nginx/nginx.conf
mysql:
image: "mysql:5.7.15"
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
ports:
- "3306:3306"
volumes:
- /Users/vilce/Desktop/docker/mysql/config/my.cnf:/etc/mysql/my.cnf
- /Users/vilce/Desktop/docker/mysql/data:/var/lib/mysql
restart:
always
networks:
default:
external:
name: my_net
最后启动脚本start.sh
内容如下:
docker-compose up -d
停止脚本stop.sh
内容如下:
docker-compose down
2、运行服务
启动脚本start.sh:
sh start.sh
此时可以访问地址http://localhost:2368/:
此页面为ghost
展示页面,访问地址http://localhost:2368/ghost进入设置页面:
根据提示添加账户信息:
第三步可以直接跳过邀请:
进入配置页面:
服务运行成功,并且查看本地ghost
文件夹下content
目录可以看到ghost
的内容信息:
3、基础操作
在服务运行成功后,我们可以开始操作ghost
完成我们自己的博客了。由于是简单介绍,这里只进行基础功能的操作。
3.1、发布文章
首先可以看到设置中Posts
栏,分为三类:Drafts
、Scheduled
、Published
。随意点击哪个进入,可以看到右上放有一个new post
按钮,点击按钮跳转到编辑页面:
需要注意的是右上角有一个publish
发布按钮和设置按钮,点击设置按钮:
可以设置文章对应的显示图片、标签、作者等信息,完成设置后点publish
发布。然后点左上角的Posts
回到管理页面,在Published
栏可以看到刚才发布的文章:
并且点击View site
或访问博客首页,也可以看到新发布的文章:
3.2、添加页面
点击Pages
栏,和上面的Post
差不多,也有一个New page
,点击进入后编辑页也差不多,配置也一样,但不同的是,Post
编辑的是文章,我们在首页可以看到,Page
编辑的是分页功能,其实就是用于扩展导航栏功能的,后面会使用到。
这里暂时先新建一个page
,并在设置中Page URL
一栏修改为tool
:
3.3、添加标签
这里可以新增文章的标签,用于标记文章类型。新增一个test
标签:
保存后,设置更新之前发布的第一篇post
的标签为test
,此时可看到新标签显示有一篇文章:
3.4、新增组员
点击Staff
栏可以看到已有两个成员:
邀请成员:
这里可以发现有4个角色,Administrators
-管理者,Author
-作者,Editor
-编辑者,Contributor
-贡献者。
其中,Contributor
是Ghost中的基本用户级别,可以创建和编辑自己的草稿帖子,但不能编辑其他人的草稿或发布帖子。Author
是Ghost中的第二个用户级别,可以编写,编辑和发布自己的帖子。Editor
是Ghost中的第3个用户级别,可以做作者可以做的所有事情,但是他们也可以编辑和发布其他人的帖子以及他们自己的帖子,还可以邀请新的撰稿人和作者访问该网站。Administrators
是Ghost中的最高用户级别是管理员。同样,管理员可以执行作者和编辑者可以执行的所有操作,但是他们还可以编辑所有站点设置和数据,而不仅是内容。此外,管理员具有邀请,管理或删除站点的任何其他用户的完全访问权限。
3.5、设计导航栏
点击Design
栏,可以看到如图的导航栏设置:
这里可以添加一个Tool
导航栏,并设置地址为3.2中我们设置的page url: http://localhost:2368/tool
,设置好后保存:
点击View site
栏或访问首页,多了一个Tool
导航栏,点击后跳出我们写好的page
页面:
这样我们就可以自行开发或修改博客的内容了。
3.6、更换主题
想要更换ghost
主题,同样点击Design
栏,拉到最下面,可以看到目前在使用的默认主题:
想要自己的主题可以点击Theme Marketplace
:
进入主题商城:
选择自己想要的主题下载,付款或找到免费的进入对应的github
页面,直接下载代码zip
压缩包:
下载完成后回到管理页面,点击刚才最底部的Upload a theme
按钮:
将刚才的压缩比拖到上面对话框中即可,关闭对话框后可以看到刚才下载的主题:
点击ACTIVATE
,切换新的主题,查看博客首页:
主题已切换完成。
4、总结
ghost的博客基本功能操作结束,基本能满足文章的编写了,但依旧有一点问题,比如标签页、目录、搜索栏等功能后续会慢慢添加修改。