пятница, 11 августа 2023 г.

Десять лет спустя, или Установка PostgreSQL на Windows

10 лет назад я написал первый пост в мой блог – про установку Oracle XE 11gR2 на Windows. Сколько воды утекло...

В 2022 комания Oracle удалила мой аккаунт, которым я пользовался лет двадцать, после того как Россия попала под экспортные ограничения. (Как в том анекдоте, где опытный кадровик помогает молодому коллеге справиться к горой резюме от кандидатов, которые тому нужно просмотреть. Половину резюме – сразу в мусорную корзину со словами "Лузеры нам не нужны!") Но жизнь продолжается.

Все эти годы прогресс не стоял на месте. Операции по установке ПО стали в самом деле рутинными благодаря Docker. Для установки текущего релиза PostgreSQL воспользуемся официальным Docker-образом с Docker Hub'а.

Предполагаю, что у вас уже установлен Docker Desktop for Windows. Если нет, то установите. Продукт прекрасно интегрирован с WSL 2.

В консоли Ubuntu под WSL2 загрузим официальный Docker-образ PostgreSQL:

andorei@HIBOU:~$ docker pull postgres 
Using default tag: latest
latest: Pulling from library/postgres
648e0aadf75a: Pull complete
f715c8c55756: Pull complete
b11a1dc32c8c: Pull complete
f29e8ba9d17c: Pull complete
78af88a8afb0: Pull complete
b74279c188d9: Pull complete
6e3e5bf64fd2: Pull complete
b62a2c2d2ce5: Pull complete
eba91ca3c7a3: Pull complete
d4a24cdf2433: Pull complete
b20f8a8dfd5c: Pull complete
e0731dd084c3: Pull complete
0361da6a228e: Pull complete
Digest: sha256:8775adb39f0db45cf4cdb3601380312ee5e9c4f53af0f89b7dc5cd4c9a78e4e8
Status: Downloaded newer image for postgres:latest
docker.io/library/postgres:latest

Готово. Теперь запустим контейнер с именем PG15, установив пароль для пользователя postgres и сделав порт 5432 доступным извне:

andorei@HIBOU:~$ docker run -d --name PG15 \
>     -p 5432:5432 \
>     -e POSTGRES_PASSWORD=postgres \
>     postgres
07ae97a0af605fc7f3de6b4f55bb8f93c0dbad790f8485f09ac5c31b353ccfa9

andorei@HIBOU:~$ docker ps

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                    NAMES
07ae97a0af60   postgres   "docker-entrypoint.s…"   14 seconds ago   Up 12 seconds   0.0.0.0:5432->5432/tcp   PG15

Подключимся к СУБД с помощью psql и убедимся в ее работоспособности:

andorei@HIBOU:~$ docker exec -it 07ae97a0af60 psql -U postgres
psql (15.3 (Debian 15.3-1.pgdg120+1))
Type "help" for help.

postgres=# select current_date;
 current_date
--------------
 2023-08-07
(1 row)

postgres=# \q
andorei@HIBOU:~$

С помощью Python проверим доступность PostgreSQL извне контейнера:

andorei@HIBOU:~$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2 as pg
>>>
>>> con = pg.connect("postgresql://postgres:postgres@localhost/postgres")
>>> cur = con.cursor()
>>> cur.execute("select current_date")
>>> print(cur.fetchone())
(datetime.date(2023, 8, 7),)
>>> con.close()
>>> exit()
andorei@HIBOU:~$

Успешно.

Прощай, Oracle... Привет, PostgreSQL!

Комментариев нет:

Отправить комментарий