3. docker-compose实战--ghost app

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: registry介绍

一. registry介绍


1. 先来了解术语


host 宿主机
image 镜像
container 容器
regisry 仓库
daemon 守护进程
client 客户端

 

2. docker与Registry的交互命令


  • docker search nginx: 搜索镜像


  • docker pull nginx: 拉取镜像到本地


  • docker push myname/nginx: 提交镜像到自己的仓库


3. 常用docker镜像的仓库


  • docker hub(官方提供)


  • daocloud(国内)


  • 时速云(国内)


  • aliyun(国内)


4. 如何将本地镜像上传到镜像库


使用命令

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname


首先, 使用tag给本地镜像起一个新的镜像名字和版本


第二: 使用git push将新的镜像push到自己的仓库

 

举个例子:


将本地的whalesay打包成一个自定义的tag标签的名字. 然后上传到docker 仓库


微信图片_20220511162939.png


提示没有权限, 那么需要先登录


docker login


微信图片_20220511162959.png


 先登录再上传


5. 搜索镜像


在搜索栏输入mysql, 可以看到mysql的基本信息. 在这下面有对mysql的基本操作


微信图片_20220511163031.png微信图片_20220511163037.png


这些内容都是很全面的.  


二. docker-compose


docker-compose是独立于docker的程序, Mac/Windows是自带到的. linux需要自己下载, 下载地址:

curl https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(name -s) - $(uname -m) > /usr/local/bin/docker-compose


 我的是mac, 直接在mac上检查是否已经安装了docker-compose


docker-compose --version


说明在mac上docker-compose已经安装了


微信图片_20220511163136.png


docker-compose实战 : 安装一个ghost app应用程序

实战的项目是一个ghost博客项目. 他依赖的环境是nginx, 也就是在nginx中运行, 使用的数据库是mysql数据库.


这个项目做好了以后, 我们就可以拥有自己的博客平台了. 哈哈哈....不用再在别人的博客平台写博客了.我是这么觉得的.


不过还要看看,这个平台好不好用.微信图片_20220511163153.png


如图: 我们会用到三个容器, 1 nginx服务器. 2. 博客ghost app容器 3. mysql容器

 

1. 创建项目文件夹ghost


首先准备一个项目文件夹ghost, 并在文件夹下面准备三个目录 ghost, nginx, data


  • ghost: 用来存放拉取的ghost镜像文件


  • nginx:用来存放pull下来的nginx镜像文件


  • data: 挂载到mysql镜像上的数据库目录

   微信图片_20220511163211.png


2. 准备ghost镜像


进入ghost镜像目录, 编写Dockerfile


FROM ghost //直接拉取官方的ghost镜像
COPY ./config.js /var/lib/ghost/content/config.js     //copy本地文件到镜像目录
EXPOSE 2368       // 项目的端口是2368
#CMD "npm", "start", "--production"    //运行启动命令


  • FROM ghost : 直接拉取官方的ghost镜像, 这里的依赖如果本地没有, 会直接去镜像看pull


  • COPY ./config.js /var/lib/ghost/config.js : copy本地文件到镜像目录


  • EXPOSE 2368: 项目的端口是2368


  • CMD "npm", "start", "--production" : 运行启动命令


准备文件config.js


var path = require('path'),
config;
config = {
  production: {
    url: 'http://mytestblog.com',
    mail: {},
    database: {
      client: 'mysql',
      connection: {
        host: 'db',      // db是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;


这个文件的内容, 替换原始文件内容, 指定了博客的url, 连接数据库的基本信息.服务的ip和端口号

 

3. 准备Nginx镜像


首先,配置Dockerfile文件


FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80


这个镜像不说了, 含义和上面的基本差不多


这里多说一句, 我们不需要启动命令了, 因为nginx中自带了启动命令

 

准备nginx.conf命令


worker_processes 4;
events {
  worker_connections 1024;    
}
http {
    server {
        listen 80;
        location / {
            proxy_pass http://ghost-app:2368;
        }
    } 
}


4. 准备一个docker-compose文件, 这个文件就是描述系统的架构的


version : '2'   // 因为docker-compose在发展中的工具, 他的语法有第一版和第二版, 我们这里使用的语法是第二版
networks:  // 显示声明一个网络, 网络名叫ghost
  ghost:
services:  // 一共有三个服务, ghost-app服务, nginx服务, mysql服务
  ghost-app:
    build: ghost   // 这个服务是怎么来的呢? 他是build来的, 我们之前提供了dockerfile文件和配置文件. 通过build得来. 那么去哪里构建呢? 请进入到ghost目录进行构建.
    networks:
      - ghost   // 指定ghost网络
    depends_on:   //描述依赖关系. 启动的时候, 先启动db. 再启动ghost-app, 最后启动nginx
      - db    
    ports:
      - "2368:2368"
  nginx:
    build: nginx     //nginx也是从文件构建, 我们已经写好了Dockerfile
    networks: 
      - ghost
    depends_on:
      - ghost-app
    ports:
      - "80:80"
  db:   //数据库描述. 这里的名字一定是db, 因为前面有文件调用了这个名字
    image: "mysql:5.7.15"   // mysql不是build, 而是直接去pull一个image
    networks:
      - ghost
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    volumes:   // 挂载mysql数据目录
      - $PWD/data:/var/lib/mysql
    ports:
      - "3306:3306"


这里的注意事项如下:


  • version : '2' -->因为docker-compose在发展中的工具, 他的语法有第一版和第二版, 我们这里使用的语法是第二版


  • build: ghost --> 这个服务是怎么来的呢? 他是build来的, 我们之前提供了dockerfile文件和配置文件. 通过build得来. 那么去哪里构建呢? 请进入到ghost目录进行构建.


  • db: 数据库描述. 这里的名字一定是db, 因为前面有文件调用了这个名字


5. 启动docker-compose


docker-compose up -d  //-d表示从后台启动


  • -d: 表示在后台启动, 退出客户端不会关闭


三个容器都启动了.


 构建镜像


docker-compose build


停止运行


docker-compose stop


查看启动的容器


docker-compose ps 


查看所有容器


docker-compose ps -a


整了好久, 没运行起来, 今早上, 终于运行起来了


原因有两点:


第一个是ghost的config.js拷贝文件的地址变了:  原来是COPY ./config.js


/var/lib/ghost/config.js  改为  COPY ./config.js /var/lib/ghost/content/config.js


第二个是注释掉ghost的Dockerfile中的这句话: # CMD "npm", "start", "--production"


再重启项目, 启动起来了.


FROM ghost
COPY ./config.js /var/lib/ghost/content/config.js
EXPOSE 2368
# CMD "npm", "start", "--production"


整个项目的代码可以参考: https://github.com/Albert-W/dockerGhost


浏览器访问http://localhost 查看nginx页面


微信图片_20220511163534.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
239 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
1月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
206 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
1月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
524 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发
|
1月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
122 0
|
5月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
4月前
|
供应链 测试技术 开发者
用 Docker 轻松部署 ERPNext 15:多场景实战指南
ERPNext 15 是一款功能全面的开源企业资源规划系统,结合 Docker 容器化部署,具备高效、灵活、低成本等优势。适用于小微企业数字化起步、多分支机构协同办公、开发者测试环境搭建、短期项目管理及企业内部培训等多种场景。模块化设计支持按需扩展,满足不同规模企业需求,是实现高效企业管理的理想选择。
用 Docker 轻松部署 ERPNext 15:多场景实战指南
下一篇
oss云网关配置