【问题标题】:Docker doesn't save permanently files, which create my java appDocker 不会永久保存文件,这会创建我的 java 应用程序
【发布时间】:2022-08-20 22:21:14
【问题描述】:

我的 java 应用程序(后端)在工作期间创建了一些文件。当我在进行一些更改后进行重建时,该文件将被删除,我的应用程序需要再次创建它。如何永久保存这些文件?我尝试创建音量,但它不起作用。

这是我的 docker-compose 配置:

version: \'3\'

services:
  examledb:
    container_name: examle-docker-db
    image: postgres
    volumes:
      - examle-docker-db:/var/lib/postgresql/data
    ports:
      - \"5555:5432\"
    expose:
      - \"5555\"
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=examle
      - PGDATA=/var/lib/postgresql/data/pgdata
    networks:
      - examle-docker-network
    restart: unless-stopped

  backend:
    container_name: examle-docker-backend
    build: ./backend
    volumes:
      - /var/lib/docker/volumes/example_prod_example-backend-volume/_data:/root/projects/example_PROD/backend
    ports:
      - \"8080:8080\"
      - \"8888:8888\"
    depends_on:
      - examledb
    networks:
      - examle-docker-network
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://examle-docker-db:5432/examle
    restart: unless-stopped

  frontend:
    container_name: examle-docker-frontend
    build: ./frontend
    restart: unless-stopped
    command: serve -s dist/vu4y-frontend -l 4200
    networks:
      - examle-docker-network

  nginx:
    image: nginx:stable
    container_name: examle-docker-nginx
    ports:
      - \"80:80\"
      - \"443:443\"
    volumes:
      - ./data/nginx:/etc/nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    depends_on:
      - frontend
      - backend
    networks:
      - examle-docker-network
    command: \"/bin/sh -c \'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \\\"daemon off;\\\"\'\"
  certbot:
    image: certbot/certbot
    restart: unless-stopped
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    networks:
      - examle-docker-network
    entrypoint: \"/bin/sh -c \'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;\'\"

volumes:
  examle-docker-db: { }

networks:
  examle-docker-network:
    driver: bridge

我也尝试像这样创建音量:

volumes:
  - example-backend-volume:/root/projects/example_PROD/backend

它也不起作用。

我在 /root/projects/Example 中的 docker-compose.yml 布局

任何建议都会非常有帮助。所有文件都在与 src 和 pom.xml 相同类别的后端文件夹中创建。

    标签: java docker docker-compose


    【解决方案1】:

    我解决了这个问题。我的问题是我不明白 docker 的音量是如何工作的。我认为需要在运行我的 docker 应用程序的地方写入 root,但需要在正确的路径中写入任何路径(在我的情况下为 /root/projects/example_PROD/backend)并将文件保存在应用程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多