簡體   English   中英

更新服務時Postgres AWS EBS卷不持久

[英]Postgres AWS EBS volume doesn't persist when updating service

我在用於AWS堆棧的標准Docker上部署了服務(使用此模板 )。 我使用帶有此撰寫文件docker stack deploy -c docker-compose.yml pos進行docker stack deploy -c docker-compose.yml pos

version: "3.2"
services:
  postgres_vanilla:
    image: postgres
    volumes:
      - db-data:/var/lib/postgresql
volumes:
  db-data:
    driver: "cloudstor:aws"
    driver_opts:
      size: "6"
      ebstype: "gp2"
      backing: "relocatable"

然后我更改數據庫中的一些數據並使用docker service update --force pos_postgres_vanilla強制更新服務

問題是我更改的數據在更新后不會持續存在。 我注意到每次更新時都會運行postgres initdb腳本,因此我認為它是相關的。

我做錯什么了嗎?

問題是cloudstor:aws在其下創建了一個lost+found的卷,因此在postgres啟動時,它發現數據目錄不為空並抱怨它。 為了解決這個問題,我將卷更改為在數據目錄上方的一個目錄/var/lib/postgresql掛載,但這導致postgres找不到PGVERSION文件,這反過來導致每次容器啟動時它都要運行initdb( https://github.com/docker-library/postgres/blob/master/11/docker-entrypoint.sh#L57 )。

因此,要解決此問題,而不是將卷掛載到數據目錄上方的一個目錄中,而是通過覆蓋環境變量PGDATA (更改為/var/lib/postgresql/data/db/ )。

暫無
暫無

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

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