After taking a leap of faith and upgrading my past-EOL Alpine Linux
server to the latest-stable
release and packages, I was rewarded
with an almost seamless upgrade. Thanks to my dockerized personal
infrastructure, all my personal services came right back up without a
hitch - apart from two that depended on a local PostgreSQL database.
Yes, I was stupid to try and save resources by having a few containers
all depend on a local install of Postgres - but now I was in a real
pickle. Alpine had installed version 17 of PostgreSQL, and my database
was stuck way back on 13 - plus the binary had been purged. To no
avail, I attempted to use apk
to install from the older repository,
but a dependency clash ensued.
Docker to the rescue. If I couldn’t run Postgres 13 natively, I
imagined I could spin up a Docker container and point it towards the
original data to successfully run pg_dump
and save the data. After a
little bit of copying and chown
-ing from /etc/postgresql
(symlinks
btfo) and /var/lib/postgresql/13/data
, I was right back where I
started, and all my services were happy again, no longer screaming
“no db! NO DB! NO DB!!!”
Here’s my docker-compose
recipe:
services:
postgres13:
image: postgres:13.12
#^ The version you are trying to rescue data from
restart: unless-stopped
ports:
- 5432:5432
environment:
PGDATA: /data
#^ Point the database to your bound volume
volumes:
- type: bind
source: /home/the-service-username/postgres-data
target: /data
#^ Allow the container to see your data on disk
From here I was happily able to pg_dump
the data and migrate
normally to a properly secured database.
Good times were had by all.
Not possible
to extract data
^
|
+----------------------------------------------+------------+
| Host: Alpine Linux | |
| | |
| .m.+- Postgres 13 | |
| m-.m%------X-------(Deceased)----+ |
| .m.PS13--.. |
| -- --#%######+m. |
| . -%m OLD #m- . +----------------------+ |
| .---+%+*m DATA -.+ | Dockerized | |
|..m---###%#*#m%%--.. | Postgres 13 | |
| -+%##*.--m--.----------------+----o-------. | |
|.m +-.m-.+m.. . | | | |
| +- .-* .. +------------+---------+ |
+---++--+-----------------------------------|---------------+
|
V
Data is freed!