使用Compose编排工具搭建Ghost博客系统

序:需要提前自备一台部署好docker环境的虚拟机,了解并熟练compose编排工具

在Centos7中,在线/离线安装Docker:https://blog.csdn.net/2301_82085712/article/details/147140694

Docker编排工具---Compose的概述及使用:https://blog.csdn.net/2301_82085712/article/details/147776436


目录

实验目的

实验步骤

1、拉取在线centos 7的yum源和epel扩展源

2、安装compose工具

3、获取所需的镜像(ghost、mysql、nginx)

4、创建ghost目录,在ghost目录中创建三个子目录(data、ghost、nginx)

5、切换到ghost目录的ghost子目录,编写Dockerfile文件

6、创建config.js文件,用于ghost的配置

7、切换到ghost目录的nginx的子目录中,编写Dockerfile文件

8、配置nginx的配置文件nginx.conf

9、返回到ghost目录,编写docker-compose.yml文件

10、执行脚本文件,完成服务的安装与部署,并查看创建的服务

11、测试,访问Ghost博客


实验目的

        利用Compose编排服务搭建博客系统,用户可以通过nginx来访问博客系统。

实验步骤

1、拉取在线centos 7的yum源和epel扩展源

## 拉取在线centos7的yum源
[root@docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2025-05-06 22:33:34--  https://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 183.131.64.61, 183.131.64.19.215
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|183.131.64.61|:443... con
HTTP request sent, awaiting response... 200 OK
Length: 2523 (2.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base.repo’

100%[=================================================>] 2,523       --.-K/s

2025-05-06 22:33:34 (234 MB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]

## 拉取在线epel扩展源
[root@docker ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
--2025-05-06 22:33:39--  https://mirrors.aliyun.com/repo/epel-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 183.131.64.66, 219.151.19.20.236
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|183.131.64.66|:443... con
HTTP request sent, awaiting response... 200 OK
Length: 664 [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/epel.repo’

100%[=================================================>] 664         --.-K/s

2025-05-06 22:33:39 (53.2 MB/s) - ‘/etc/yum.repos.d/epel.repo’ saved [664/664]

2、安装compose工具

[root@docker ~]# yum -y install docker-compose
[root@docker ~]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9

3、获取所需的镜像(ghost、mysql、nginx)

[root@docker ~]# docker pull ghost:1-alpine
[root@docker ~]# docker pull mysql:5.7.15
[root@docker ~]# docker pull nginx:latest
[root@docker ~]# docker images
REPOSITORY   TAG        IMAGE ID       CREATED       SIZE
nginx        latest     a830707172e8   2 weeks ago   192MB
ghost        1-alpine   efcd4044e3a0   5 years ago   268MB
mysql        5.7.15     18f13d72f7f0   8 years ago   383MB

4、创建ghost目录,在ghost目录中创建三个子目录(data、ghost、nginx)

[root@docker ~]# mkdir /ghost
[root@docker  ~]# cd /ghost/
[root@docker ghost]# mkdir {data,ghost,nginx}
[root@docker ghost]# ls
data ghost nginx

5、切换到ghost目录的ghost子目录,编写Dockerfile文件

[root@docker ghost]# cd ghost/
[root@docker ghost]# vi Dockerfile
[root@docker ghost]# cat Dockerfile
FROM ghost:1-alpine
COPY ./config.js /var/lib/ghost/config.js
EXPOSE 2368
#CMD ["npm","start","--production"]

6、创建config.js文件,用于ghost的配置

[root@docker ghost]# vi config.js
[root@docker ghost]# cat config.js
var path = require('path'),
    config;

config = {
    production: {
        url: 'http://my-ghost-blog.com',
        mail: {},
        database: {
                client: 'mysql',
                connection: {
                        host: 'db',
                        user: 'ghost',
                        password: '123456',
                        database: ''ghost,
                        port: '3306',
                        charset: ''utf-8,
                        },
                debug: false
                },
                paths: {
                        contentPath: path.jion(process.env.GHOST_CONTENT, '/')
                },
                server: {
                        host: '0.0.0.0',
                        port: '2368'
                },
        }
}
// Export config
module.exports = config;

7、切换到ghost目录的nginx的子目录中,编写Dockerfile文件

[root@docker ghost]# cd ../nginx
[root@docker nginx]# vi Dockerfile
[root@docker nginx]# cat Dockerfile
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

8、配置nginx的配置文件nginx.conf

[root@docker nginx]# vi nginx.conf
[root@docker nginx]# cat nginx.conf
work_processes 4;
events {worker_connections 1024;}
http {
        server{
                listen 80;
                location / {
                        proxy_pass http://ghost-app:2368;
                }
        }
}

9、返回到ghost目录,编写docker-compose.yml文件

[root@docker nginx]# cd ..
[root@docker ghost]# vi docker-compose.yml
[root@docker ghost]# cat docker-compose.yml
version: "3"
networks:
    blog:
services:
        ghost-app:
                build: ghost
                restart: always
                networks:
                        - blog
                depends_on:
                        - db
                ports:
                        - "2368:2368"
        nginx:
                build: nginx
                restart: always
                networks:
                        - blog
                depends_on:
                        - ghost-app
                ports:
                        - "80:80"
        db:
                image: "mysql:5.7.15"
                networks:
                        - blog
                environment:
                        MYSQL_ROOT_PASSWORD: mysqlroot
                        MYSQL_USER: ghost
                        MYSQL_PASSWORD: 123456
                volumes:
                        - $PWD/data:/var/lib/mysql
                ports:
                        - "3306:3306"

## 检测docker-compose.yml编排文件

[root@docker ghost]# docker-compose config
                        

10、执行脚本文件,完成服务的安装与部署,并查看创建的服务

[root@tangjing ghost]# docker-compose up -d
Creating network "ghost_blog" with the default driver
Building ghost-app
Step 1/3 : FROM ghost:1-alpine
 ---> efcd4044e3a0
Step 2/3 : COPY ./config.js /var/lib/ghost/config.js
 ---> b2d75401677c
Step 3/3 : EXPOSE 2368
 ---> Running in 6122339f4b69
 ---> Removed intermediate container 6122339f4b69
 ---> 64d47c621ef8
Successfully built 64d47c621ef8
Successfully tagged ghost_ghost-app:latest
WARNING: Image for service ghost-app was built because it did not already exist this image you must use `docker-compose build` or `docker-compose up --build`.
Building nginx
Step 1/3 : FROM nginx
 ---> a830707172e8
Step 2/3 : COPY nginx.conf /etc/nginx/nginx.conf
 ---> 481129bd9419
Step 3/3 : EXPOSE 80
 ---> Running in 5aa7ec064fe2
 ---> Removed intermediate container 5aa7ec064fe2
 ---> d13bf46137cd
Successfully built d13bf46137cd
Successfully tagged ghost_nginx:latest
Creating ghost_db_1        ... done
s image you must use `docker-compose build` or `docker-compose up --build`.
Creating ghost_ghost-app_1 ... done
Creating ghost_ghost-app_1 ...
Creating ghost_nginx_1     ... done
[root@docker ghost]# docker-compose ps
      Name                     Command                 State                       Ports                  
----------------------------------------------------------------------------------------------------------
ghost_db_1          docker-entrypoint.sh mysqld      Up           0.0.0.0:3306->3306/tcp,:::3306->3306/tcp
ghost_ghost-app_1   docker-entrypoint.sh node  ...   Up           0.0.0.0:2368->2368/tcp,:::2368->2368/tcp
ghost_nginx_1       /docker-entrypoint.sh ngin ...   Up           0.0.0.0:80->80/tcp,:::80->80/tcp

## 三个服务的状态需是“Up”,则表示服务创建并启动成功!!!

11、测试,访问Ghost博客

( http://IP:80,http://IP:2368 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@t.t.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值