postgresql - 来自自定义 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 实例之前..所以如果有人可以帮忙请..
解决方案
推荐阅读
- python - 如何使用 pandas 库添加特定的两列并获得新列的总数?
- android - API 26 的 LOCK_TASK_FEATURE_GLOBAL_ACTIONS 替代方案
- unicode - 是否有理由对没有复数的语言环境使用 ICU 复数语法?
- java - 运行springboot应用程序时出错
- r - 仅包含数据集的输出的数据结构是什么?
- python - 我需要减少执行硒动作链的时间
- android - 如何使用 Intent 传递实时数据
- caliburn.micro - 如何为新的 VS 解决方案安装最新的 Caliburn Alpha?
- php - 如何关闭动态组中的 div?
- html - 带有单元格填充的 HTML 表格替代行着色