Strapi 01 :: 使用Docker搭建Strapi系统

什么是Strapi

  一套免费的CMS系统,使用API driven,也就是说,消费strapi的时候,可以通过strapi提供的API来调用strapi的资源。

  • Strapi的优势
    • 支持多种数据库 (SQLite, MongoDB, MySQL, Postgres)
    • Api Driven(可以在消费端和Strapi之间建立隔离)
    • Authentication&Authorization(基于API Driven,方便做权限管理)
    • 永久免费
  • Strapi的不足
    • 现阶段没有完整的migrate方案,需要手工dump数据

  总体来说,对于轻量级或者微服务来说,strapi还是能够较好地满足我们的需求的。

使用docker-compose搭建strapi

  • 安装docker-compose

    本文采用ubuntu作为目标机,如果有使用mac或者windows的小伙伴们,可以自行百度一下,其实很容易的。

   可以follow这篇文章来安装docker-compose

   https://docs.docker.com/compose/install/

  1 sudo chmod +x /usr/local/bin/docker-compose
  2 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  3 #verify docker-compose installed
  4 docker-compose --version
  • 编写docker-compose.yml

   Strapi的官方文档已经提供了如何编写docker-compose的方法。

    https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/installation/docker.html#step-1-create-a-docker-compose-yaml-file

 

 1 version: '3'
 2 services:
 3   strapi:
 4     image: strapi/strapi
 5     environment:
 6       DATABASE_CLIENT: mongo
 7       DATABASE_NAME: strapi
 8       DATABASE_HOST: mongo
 9       DATABASE_PORT: 27017
10       DATABASE_USERNAME: strapi
11       DATABASE_PASSWORD: strapi
12     volumes:
13       - ./app:/srv/app
14     ports:
15       - '1337:1337'
16     depends_on:
17       - mongo
18 
19   mongo:
20     image: mongo
21     environment:
22       MONGO_INITDB_DATABASE: strapi
23       MONGO_INITDB_ROOT_USERNAME: strapi
24       MONGO_INITDB_ROOT_PASSWORD: strapi
25     volumes:
26       - ./data:/data/db
  • 运行docker-compose
  1 docker-compose down
  2 docker-compose up -d
  • 查看进程
1 docker ps # view all process
2 
3 docker ps -a # view all process include stopped

添加content-type

  • 按照上面步骤运行docker-compose

   使用docker-compose运行之后,可以查看已经运行的docker container。其中红色框框里面的是上面docker-compose.yml中描述的两个container。第一行则是后续我们要介绍的strapi的consumer。

   

  • 打开strapi网站

   strapi的container运行之后,第一次启动,strapi会安装前端的应用程序,会根据网络状况的不同,耗时不同。一个小技巧,如果等不及,可以手动安装。

   方法如下:

  1 docker exec -it 4a7e94 # 这里的4a7e94是上述得到的strapi-container id
  2 npm install

   第一次打开网站会让你创建super admin账户的用户名密码,一定记住这个密码,否则以后没法登录!

  • 进入admin页面

   

 

 

    创建好super-admin之后,页面会像上图一样,点击“Open the administration”按钮,会进入到admin页面。

   

  • 点击“Content-Types Builder”

   

    • 点击“Content-Type Builder”
    • 点击“Create New Collection Type”
    • follow向导创建你的Collection Content Type,顾名思义,collection content type就相当于数据库里面的一个表,而single content type相当于一个单例
    • 需要注意的一点,Strapi也像关系型数据库一样支持表与表之间的关系,你还可以定义每个表在关系中显示的字段
      • 例如,现在我创建了Entity1和Entity2两个Collection Type
      • Entity1里面有name和username两个字段
      • Entity2里面有name一个字段,下面我想让每个Entity1对应一个Entity2
      • 需要选中Entity2,点击“Add new field”,再选择Relationship

         

      • 选中Entity1作为关系项,默认会选中Entity1中的第一个字段也就是name

         

           

      • 我们可以通过编辑Entity1来显示Entity1的UserName
        • 点击“Content-Type Builder”,选中Entity2,点击“Configure the view”
        • 点击“Relation Fields”中的Entity1
        • 在弹出窗口中将Entity-Title从name换成“username”
        • 重新创建Entity2,就可以显示Entity1.username了

          

         

          

暴露Api

  • 点击侧边栏的Settings
  • 点击“USERS & PERMISSIONS PLUGINS”下的roles
  • 点击pbulic,就可以配置要暴露的api了
  • 勾选要暴露的API,在右侧strapi会为我们显示api的格式
  • 可以使用postman等工具进行测试

   

   

    

    

 

posted @ 2021-05-21 10:02  yafeya  阅读(1529)  评论(0编辑  收藏  举报