簡體   English   中英

使用 Docker 時通過 API 上傳文件

[英]Upload File by API when using Docker

我正在編寫一個具有 PostgreSQL 數據庫的 Spring Boot 應用程序。 我的控制器中有一個 API,它獲取文件為

@RequestParam("file") MultipartFile 文件

並將文件保存在項目根文件夾中的文件夾中。 但是當我在調用 API 后使用 docker 時,沒有文件被保存在任何文件夾中,或者我可能不知道它在容器中的保存位置。 我正在使用 docker-compose 運行項目,這是我的 application.properties 和 docker-compose.yml 文件:

應用程序屬性:

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.platform=postgres

spring.datasource.url= jdbc:postgresql://localhost:5432/myDB?useSSL=true
spring.datasource.username= myusername
spring.datasource.password= mypassword
    
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto= update


## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring.servlet.multipart.enabled=true
# All files uploaded through the REST API will be stored in this directory
file.upload-dir=E:uploadedFilesOfMyProject

碼頭工人撰寫:

version: '3.1'
services:
  API:
    image: 'myJar.jar'
    ports:
      - "8080:8080"
    depends_on:
      PostgreSQL:
        condition: service_healthy
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/myDB
      - SPRING_DATASOURCE_USERNAME=myusername
      - SPRING_DATASOURCE_PASSWORD=mypassword
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update

  PostgreSQL:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=mypassword
      - POSTGRES_USER=myusername
      - POSTGRES_DB=myDB
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myusername"]
      interval: 10s
      timeout: 5s
      retries: 5

我在 application.properties 中設置了如下目錄,當我使用郵遞員上傳文件時,當項目由 docker-compose up 運行時,該文件夾中沒有保存任何內容

file.upload-dir=E:uploadedFilesOfMyProject

我在哪里做錯了? 我誤會了什么?

如果有人可以幫助我,我將不勝感激。

這是我使用的最后一個 docker-compose.yml 文件:我希望它也能幫助其他人:

version: "3.8"
services:
  pg_db:
    image: postgres
    restart: always
    volumes:
      - "./postgres/data:/var/lib/postgresql/data"
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: 
      POSTGRES_PASSWORD: 
      POSTGRES_DB: 
    networks:
      - product-net

  api_service:
    build: .
    restart: always
    ports:
      - 8080:8080
    depends_on:
      - pg_db
    networks:
      - product-net

networks:
  product-net:
    driver: bridge

volumes:
  pg_db:
    driver: local

我認為您的問題是您必須在您的應用程序的作曲家文件中定義環境“uploadedFilesOfMyProject”。

問候,約瑟夫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM