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等工具進行測試

   

   

    

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM