说明
Docker Compose 是用来定义和运行复杂 docker 应用的编排工具。你可以在 docker-compose.yml
文件中定义一个或多个容器应用,以及他们的依赖关系、网络、构建等内容。
安装Docker Compose
准备工作
随便找个地方,创建一个目录,如: ghost。后续所有操作均在此目录中进行。在创建 nginx
,ghost
两个目录
nginx 配置
- 在nginx目录中创建
Dockerfile
文件,内容如下:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
- 再创建
nginx.conf
配置文件,内容如下:
worker_processes 4;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
proxy_pass http://ghost-app:2368;
}
}
}
mysql 配置
- 在ghost目录中创建
Dockerfile
文件,内容如下:
FROM ghost:1-alpine
COPY ./config.js /var/lib/ghost/config.js
EXPOSE 2368
- 再创建
config.js
配置文件,内容如下:
var path = require('path'),
config;
config = {
production: {
url: 'http://my-ghost-blog.com',
mail: {},
database: {
client: 'mysql',
connection: {
host: 'db', // docker-compose.yml 文件中定义的services名字: db
user: 'ghost',
password: '12345',
database: 'ghost',
port: '3306',
charset: 'utf8'
},
debug: false
},
paths: {
contentPath: path.join(process.env.GHOST_CONTENT, '/')
},
server: {
host: '0.0.0.0',
port: '2368'
},
}
}
// Export config
module.exports = config;
最后编写 docker-compose.yml
内容包含了,mysql数据库,nginx,ghost轻博客。具体如下:
version: '3' # compose文件的版本号
networks:
blog:
services:
ghost-app: # 主机名或服务名
build: ghost
restart: always
networks:
- blog
depends_on: # 依赖关系
- db
ports: # 与宿主机端口映射关系
- "2368:2368"
nginx:
build: nginx
networks:
- blog
depends_on:
- ghost-app
ports:
- "8089:80"
db:
image: "mysql:5.7.15"
networks:
- blog
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: 12345
volumes:
- $PWD/data:/var/lib/mysql
ports:
- "3307:3306"
最终的目录结构如下:
启动应用
- 执行命令:
docker-compose up -d
会出现如下图内容,且不报错,则基本成功了。
- 验证,浏览器地址栏输入:
http://localhost:2368/
,可以请问,且出现如下图,则成功启动服务:
- 管理后台:
http://localhost:2368/ghost
,如下图,自行创建账号密码即可管理了。