使用Docker组合和卷来持久保存上传的图片目录



我正在从事电子商务工作,我希望能够从客户端上传产品照片,并将其保存在服务器上的目录中。

我实现了这个功能,但后来我明白了,由于我们使用docker进行部署,我保存图片的目录将不会持久存在。当我搜索时,我有点意识到我应该在dockercompose中使用卷并映射该目录。我是一个完全的后端开发新手(我在前端工作(,所以我真的不确定我应该做什么

这是组成文件:

version: '3'
services:
nodejs:
image: node:latest
environment:
- MYSQL_HOST=[REDACTED]
- FRONT_SITE_ADDRESS=[REDACTED]
- SITE_ADDRESS=[REDACTED]
container_name: [REDACTED]
working_dir: /home/node/app
ports:
- "8888:7070"
volumes:
- ./:/home/node/app
command: node dist/main.js
links:
- mysql
mysql:
environment:
- MYSQL_ROOT_PASSWORD=[REDACTED]
container_name: product-mysql
image: 'mysql:5.7'
volumes:
- ../data:/var/lib/mysql

如果我想将我的照片存储在../static/images(与我的项目的根相对应(中,我应该怎么做,以及如何在我的后端代码中引用此路径?

后端在nodejs(Nestjs(中。

您必须创建一个volume,并告诉docker compose/docker堆栈将其装载到容器中指定您想要的路径。请参阅文件末尾的volumesnodejs服务上的volumes选项。

version: '3'
services:
nodejs:
image: node:latest
environment:
- MYSQL_HOST=[REDACTED]
- FRONT_SITE_ADDRESS=[REDACTED]
- SITE_ADDRESS=[REDACTED]
container_name: [REDACTED]
working_dir: /home/node/app
ports:
- "8888:7070"
volumes:
- ./:/home/node/app
- static-files:/home/node/static/images
command: node dist/main.js
links:
- mysql
mysql:
environment:
- MYSQL_ROOT_PASSWORD=[REDACTED]
container_name: product-mysql
image: 'mysql:5.7'
volumes:
- ../data:/var/lib/mysql
volumes:
static-files:{}

这样做,一个空容器将被装入板条箱,以保存您的数据,每次新容器装载此路径时,您都可以获得存储在其中的数据。我建议对mysql使用相同的方法,而不是将数据保存在主机中。

https://docs.docker.com/compose/compose-file/#volume-配置参考

最新更新