首页 > 解决方案 > 来自自定义 AMI 的 EC2 Postgresql docker 仅在重新启动 docker 后才会挂载数据库更改

问题描述

我在 t2.micro Amazon-linux-2 Ec2 实例中的 docker 容器上运行 Postgresql 13,同时我创建了一个用于自动缩放的 AMI 映像,我尝试从自定义 AMI 映像启动新的 ec2 实例并使用以下用户数据 :

#!/bin/bash

#Upgrade ec2 instance
yum update -y 

#Start docker daemon on boot
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

#Start docker service 
service docker start 

#Start docker image 
docker run --restart unless-stopped --name postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres

#Cpy my_thesaurus.ths file
cp /var/lib/docker/overlay2/***/diff/usr/share/postgresql/13/tsearch_data/thesaurus_sample.ths
 /var/lib/docker/overlay2/***/diff/usr/share/postgresql/13/tsearch_data/my_thesaurus.ths
 
 --//

问题是当我用 DBeaver 连接到新的实例数据库时,首先我必须输入默认的 postgresql 密码,其次我得到没有物化视图但有表的数据库(这很奇怪,但每次都会发生同样的情况),重点来了,当我 ssh 进入 ec2 实例并执行以下操作时:

$ sudo service docker restart
$ docker run ..... ( in the case where i used docker run --rm in user data and not docker run --restart unless-stopped , in the second case dont need to docker run )

之后我将数据库中的密码更改为我在自定义 AMI 中更改的密码,然后我得到了物化视图,当然我尝试将重启添加到用户数据,但似乎不起作用,可能整个问题是用户数据在实例启动时执行,所以可能在将新卷安装到 ec2 实例之前..所以如果有人可以帮忙请..

标签: postgresqldockeramazon-ec2amazon-amiuser-data

解决方案


推荐阅读