2017-12-11 16 views
1

내 FiWare WireCloud 용 도커 컨테이너를 사용하고 있습니다. 그것은 제대로 작동하지만 중지 할 때 고정 표시기 내 컨테이너을 작성하고 고정 표시기와 함께 다시 시작 내가 PostgreSQL 데이터베이스에 대한 볼륨을 지정한 경우 내 모든 데이터도 삭제됩니다을 작성하고 나는 다음과 같은 오류가 있습니다Docker가 fiware를 작성합니다. WireCloud 데이터 지속성이 볼륨에서로드되지 않았습니다.

을 나는 다시 작동하게하려면
ERROR: relation "wirecloud_workspace" does not exist at character 370 

, 나는 (& createsuperuser initdb를) 처음부터 전체 데이터베이스

는 내가 뭘하고 싶은 것은 볼륨 안에 내 wirecloud 데이터를 저장 할 수 있습니다를 다시해야하고 그것을 백업하고 다시로드 할 수 있습니다. 그들은 documentation에 표시하지만 결과는 동일처럼

version: '3.3' 
services: 

    iot-mongo: 
     image: mongo:3.2 
     ports: 
     - "27017:27017" 
     volumes: 
      - ./data/mongo:/data/db 

    orion: 
     image: fiware/orion:1.9.0 
     links: 
     - iot-mongo 
     ports: 
     - "1026:1026" 
     command: -dbhost iot-mongo 


    nginx: 
     restart: always 
     image: nginx:1.13 
     ports: 
      - "80:80" 
      - "443:443" 
     volumes: 
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro 
      - ./nginx/sites-available:/etc/nginx/sites-available 
      - ./letsencrypt/well-known:/www/letsencrypt 
      - /etc/letsencrypt/:/etc/letsencrypt/ 
      - wirecloudwww:/var/www/static 
      - wirecloudinstance:/opt/wirecloud_instance 
     links: 
      - wirecloud:wirecloud 
      - orion:orion 
    postgres: 
     restart: always 
     image: postgres:latest 
     ports: 
      - "5432:5432" 
     volumes: 
      - postgresdata:/var/lib/postgresql 
     environment: 
      POSTGRES_USER: postgres 
      POSTGRES_PASSWORD: 
      POSTGRES_DB: postgres 
      PGDATA: /tmp 
    wirecloud: 
     restart: always 
     image: fiware/wirecloud:1.0-composable 
     links: 
      - postgres:postgres 
     volumes: 
      - wirecloudwww:/var/www/static 
      - wirecloudinstance:/opt/wirecloud_instance 
    volumes: 
     wirecloudwww: {} 
     wirecloudinstance: {} 
     postgresdata: {} 

나는 또한 고정 표시기-작성 V1과 시도 : 다음은 버전 3에서 내 현재 고정 표시기-compose.yml 파일입니다.

답변

1

문제는 포스트 그레스 볼륨과 PGDATA 환경 변수의 정의입니다. PGDATA 환경은 PostgreSQL에 데이터를 /tmp에 저장하도록 알려주므로 볼륨 내부에 데이터를 저장하지 않습니다 (/tmp에 볼륨을 만들 수 있지만 약간 이상하게 보입니다). PGDATA 환경 변수를 제거하면 postgres는 데이터를 /var/lib/postgresql/data에 저장합니다. postgres 서비스에이 정의를 사용하면 트릭을 수행해야합니다.

postgres: 
    restart: always 
    image: postgres:latest 
    ports: 
     - "5432:5432" 
    volumes: 
     - postgresdata:/var/lib/postgresql/data 
    environment: 
     POSTGRES_USER: postgres 
     POSTGRES_PASSWORD: 
     POSTGRES_DB: postgres