如何在 dockerized strapi 中保留我的内容类型
How do I retain my content types within a dockerized strapi
我一直在为 docker (https://github.com/strapi/strapi-docker) 使用 strapi,但每当我重建我的容器时,数据都会消失。我仍然可以在数据库中看到它,但管理员无法识别它。
我尝试重新创建内容类型,然后数据库中的记录出现了,但是当我再次重建容器时,内容类型消失了
内容定义存储在哪里?这是应用程序的错误吗? (我认为 strapi-docker 使用的是 alpha 版本)
如何让 strapi 将我的内容定义保留在数据库中,以便我可以使用无状态容器?
更新
我试着查看附件 -
api:
build: .
env_file: './dev.env'
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
restart: always
但是里面什么都没有 -
Aidans-MacBook:strapi-docker aidan$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02b098286ada strapi-docker_api "docker-entrypoint.s…" 24 minutes ago Up 5 minutes (healthy) 0.0.0.0:1337->1337/tcp strapi-docker_api_1
Aidans-MacBook:strapi-docker aidan$ docker inspect -f "{{.Mounts}}" 02b098286ada
[{bind /Users/aidan/Documents/Code/beefbook/strapi-docker/strapi-app /usr/src/api/strapi-app rw true rprivate}]
Aidans-MacBook:strapi-docker aidan$ ls /Users/aidan/Documents/Code/beefbook/strapi-docker/strapi-app
Aidans-MacBook:strapi-docker aidan$
您需要挂载目录以保持文件持久化。
- ./strapi-app:/usr/src/api/strapi-app
申请
- ./db:/data/db
对于数据库
version: '3'
services:
api:
build: .
image: strapi/strapi
environment:
- APP_NAME=strapi-app
- DATABASE_CLIENT=mongo
- DATABASE_HOST=db
- DATABASE_PORT=27017
- DATABASE_NAME=strapi
- DATABASE_USERNAME=
- DATABASE_PASSWORD=
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=strapi
- HOST=localhost
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
depends_on:
- db
restart: always
db:
image: mongo
environment:
- MONGO_INITDB_DATABASE=strapi
ports:
- 27017:27017
volumes:
- ./db:/data/db
restart: always
运行 docker-compose up
你会看到数据现在已经持久化了。
更新:
经@Aidan调查
它使用了 APP_NAME 环境变量(默认为 "strapi-app")。所以正确的安装是 /usr/src/api/beef-content
(因为在我的例子中,APP_NAME
是 beef-content
)。我会用它来挂载我的卷
我的项目可能有解决方案 "strapidocker-tools":
https://github.com/OliCpg/strapidocker-tools
这将使您备份、移动和恢复完整的 dockerised strapi 项目。
请注意,它将与两个名为 strapi 和 strapi_db 的 docker 容器一起使用。你不应该重命名它们(我稍后会更改)。它们会在恢复时重新创建。
仍在进行中,目前不是很优雅,但对我有用。
欢迎反馈。
我一直在为 docker (https://github.com/strapi/strapi-docker) 使用 strapi,但每当我重建我的容器时,数据都会消失。我仍然可以在数据库中看到它,但管理员无法识别它。
我尝试重新创建内容类型,然后数据库中的记录出现了,但是当我再次重建容器时,内容类型消失了
内容定义存储在哪里?这是应用程序的错误吗? (我认为 strapi-docker 使用的是 alpha 版本)
如何让 strapi 将我的内容定义保留在数据库中,以便我可以使用无状态容器?
更新
我试着查看附件 -
api:
build: .
env_file: './dev.env'
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
restart: always
但是里面什么都没有 -
Aidans-MacBook:strapi-docker aidan$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02b098286ada strapi-docker_api "docker-entrypoint.s…" 24 minutes ago Up 5 minutes (healthy) 0.0.0.0:1337->1337/tcp strapi-docker_api_1
Aidans-MacBook:strapi-docker aidan$ docker inspect -f "{{.Mounts}}" 02b098286ada
[{bind /Users/aidan/Documents/Code/beefbook/strapi-docker/strapi-app /usr/src/api/strapi-app rw true rprivate}]
Aidans-MacBook:strapi-docker aidan$ ls /Users/aidan/Documents/Code/beefbook/strapi-docker/strapi-app
Aidans-MacBook:strapi-docker aidan$
您需要挂载目录以保持文件持久化。
- ./strapi-app:/usr/src/api/strapi-app
申请
- ./db:/data/db
对于数据库
version: '3'
services:
api:
build: .
image: strapi/strapi
environment:
- APP_NAME=strapi-app
- DATABASE_CLIENT=mongo
- DATABASE_HOST=db
- DATABASE_PORT=27017
- DATABASE_NAME=strapi
- DATABASE_USERNAME=
- DATABASE_PASSWORD=
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=strapi
- HOST=localhost
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
depends_on:
- db
restart: always
db:
image: mongo
environment:
- MONGO_INITDB_DATABASE=strapi
ports:
- 27017:27017
volumes:
- ./db:/data/db
restart: always
运行 docker-compose up
你会看到数据现在已经持久化了。
更新:
经@Aidan调查
它使用了 APP_NAME 环境变量(默认为 "strapi-app")。所以正确的安装是 /usr/src/api/beef-content
(因为在我的例子中,APP_NAME
是 beef-content
)。我会用它来挂载我的卷
我的项目可能有解决方案 "strapidocker-tools": https://github.com/OliCpg/strapidocker-tools
这将使您备份、移动和恢复完整的 dockerised strapi 项目。
请注意,它将与两个名为 strapi 和 strapi_db 的 docker 容器一起使用。你不应该重命名它们(我稍后会更改)。它们会在恢复时重新创建。
仍在进行中,目前不是很优雅,但对我有用。
欢迎反馈。