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!
Комментариев нет:
Отправить комментарий