Установка Docker, Docker Compose и PostgreSQL на Windows
Это руководство позволит вам установить Docker, Docker Compose и PostgreSQL на операционной системе Windows с использованием Docker Compose.
Шаг 1: Установка Docker
- Перейдите на официальный сайт Docker (https://www.docker.com/) и скачайте установочный файл Docker Desktop для Windows.
- Запустите установщик и следуйте инструкциям на экране для установки Docker.
- После завершения установки запустите Docker Desktop.
Шаг 2: Проверка установки Docker
- Откройте командную строку (Command Prompt) или PowerShell. (wir+r) введите команду
cmd
и нажмите Enter. - Введите команду
docker version
и нажмите Enter. - Если установка прошла успешно, вы должны увидеть информацию о версии Docker Engine и Docker Compose.
Шаг 3: Создание файла docker-compose.yml для создания контейнера PosrgreSQL
- Создайте новую пустую папку, где будет находиться ваш проект.
- В этой папке создайте новый текстовый файл и назовите его
docker-compose.yml
. - Откройте
docker-compose.yml
в текстовом редакторе и добавьте следующий код:
version: '3' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: your_postgres_password POSTGRES_USER: your_postgres_username volumes: - ./data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - 5432:5432
- опция для автоматического удаления контейнера после его остановки (если требуется), нужно добавить в
docker-compose.yaml
-
version: '3'
: Указывает версию синтаксиса Docker Compose, которую мы используем. В данном случае, это версия 3. -
services
: Определяет список сервисов, которые будут запущены с помощью Docker Compose. -
db
: Название нашего сервиса, в данном случае, это PostgreSQL. -
image: postgres
: Указывает Docker, чтобы он загрузил образ PostgreSQL из Docker Hub. -
restart: always
: Указывает Docker перезапустить контейнер автоматически, если он неожиданно остановится. -
environment
: Определяет переменные окружения, которые будут переданы в контейнер PostgreSQL. Здесь мы устанавливаем пароль и имя пользователя для доступа к базе данных. -
volumes
: Монтирует локальную папку ./data внутрь контейнера PostgreSQL для хранения данных базы данных../data:/var/lib/postgresql/data:
./data
— это путь на хост-машине (локальной системе), где будет располагаться директория данных для контейнера.
/var/lib/postgresql/data
— это путь внутри контейнера, где PostgreSQL ожидает наличие данных.
Это опция связывает директорию на хост-системе с директорией данных PostgreSQL внутри контейнера. Все данные, созданные или измененные в контейнере, будут сохраняться в этой директории. При следующем запуске контейнера эти данные будут доступны внутри контейнера../init.sql:/docker-entrypoint-initdb.d/init.sql:
./init.sql
— это путь к файлу init.sql, содержащему SQL-скрипт инициализации базы данных./docker-entrypoint-initdb.d/init.sql
— это путь внутри контейнера, где входная точка инициализации PostgreSQL ожидает наличие SQL-скриптов. -
ports
: Пробрасывает порт 5432 на локальной машине на порт 5432 внутри контейнера, чтобы мы могли подключаться к базе данных с внешнего устройства.
Обратите внимание, что вам необходимо заменить your_postgres_password
на фактический пароль, который вы хотите использовать для пользователя PostgreSQL, и your_postgres_username
на фактическое имя пользователя, которое вы хотите использовать.
Шаг 4: Запуск контейнера PostgreSQL с помощью Docker Compose
- Откройте командную строку (Command Prompt) или PowerShell. (wir+r) введите команду
cmd
и нажмите Enter. - Перейдите в папку, где находится ваш файл
docker-compose.yml
с помощью командыcd <путь до папки с файлом>
. - Введите команду
docker-compose up -d
и нажмите Enter. - Docker Compose загрузит образ PostgreSQL, создаст и запустит контейнер.
- Когда контейнер будет успешно запущен, вы сможете подключиться к базе данных PostgreSQL с помощью выбранного вами инструмента.
Шаг 4: Проверка установки и запуска контейнера PostgreSQL
- Чтобы проверить запустился ли контейнер с PostgreSQL, откройте командную строку (Command Prompt) или PowerShell. (wir+r) введите команду
cmd
и нажмите Enter. - Введите команду
docker ps
.
Если все успешно установилось и запустилось, вы увидите в списоке контейнер postgres.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04ff43fe51f3 postgres "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:5432->5432/tcp docker-db-1
- Если контейнер автоматически не запустился можно проверить командой
docker ps -a
создался контейнер.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04ff43fe51f3 postgres "docker-entrypoint.s…" 26 minutes ago Exited (0) About a minute ago docker-db-1
Для запуска используйте команду (если не настроен автоматических запуск контейнера при создании) docker start <имя контейнера или его ID>
Так же проверить корректность установки, запуск, управление контейнером можно в Docker Desktop.
Теперь вы установили Docker, Docker Compose и запустили контейнер PostgreSQL с помощью Docker Compose.
Шаг 5: Подключение к базе PostgresSQL
Вы можете подключиться к базе данных с использованием выбранного вами инструмента для управления PostgreSQL. Вот как это можно сделать:
-
Откройте инструмент для управления базами данных PostgreSQL, например, pgAdmin, DBeaver или командную строку psql.
-
Введите следующие данные для подключения:
-
Хост
: localhost или 127.0.0.1 (так как мы пробросили порт 5432 в контейнере на порт 5432 на локальной машине) -
Порт
: 5432 (порт, который мы указали в docker-compose.yml) -
Имя пользователя
: ваше выбранное имя пользователя (то, что вы указали вdocker-compose.yml
в полеPOSTGRES_USER
) -
Пароль
: ваш выбранный пароль (то, что вы указали вdocker-compose.yml
в полеPOSTGRES_PASSWORD
) -
База данных
: по умолчанию PostgreSQL создает базу данных с именем, совпадающим с именем пользователя, которое вы указали при установке (можно указать другое имя базы данных, если требуется) -
команда для подключения к контейнеру с базой через командную строку и вызова psql
docker exec -it my_db_container psql -U postgres -d testdb
- команда psql для добавления новых данных в базу
INSERT INTO public.index_mass (user_id, weight, height) VALUES (4, 80, 178);
- Нажмите на кнопку «Подключиться» или выполните соответствующую команду для подключения к базе данных.
После успешного подключения вы сможете работать с базой данных PostgreSQL через выбранный вами инструмент для управления базами данных.
Данный проект, собирает два docker
контейнера, с PostgreSQL
и App
, в контейнере App выполняется код который взаимодействует с СУБД Postgres.
Today at work we were setting up a development environment for a .Net Core project using PostgreSql as it’s datastore. We decided that we set up the database server running in a container in the same way I have been running SQL Server (See recent article: Running Microsoft SQL Server in a Container on Windows 10) for the local development environment. Using the docker-compose file from this article as a basis and referring to the documentation for the postgres docker image on Docker Hub we put together a docker-compose file for PostgreSQL that looked similar to this:
version: "3" services: postgres: image: "postgres" ports: - 5432:5432 environment: POSTGRES_USER: "MyUser" POSTGRES_PASSWORD: "Password!23" POSTGRES_DB: "example" volumes: - C:\Docker\PostgreSql\data:/var/lib/postgresql/data
Upon running docker-compose we were greeted with the following output containing an error message:
Creating postgresql_postgres_1 ... done Attaching to postgresql_postgres_1 postgres_1 | The files belonging to this database system will be owned by user "postgres". postgres_1 | This user must also own the server process. postgres_1 | postgres_1 | The database cluster will be initialized with locale "en_US.utf8". postgres_1 | The default database encoding has accordingly been set to "UTF8". postgres_1 | The default text search configuration will be set to "english". postgres_1 | postgres_1 | Data page checksums are disabled. postgres_1 | postgres_1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok postgres_1 | creating subdirectories ... ok postgres_1 | selecting dynamic shared memory implementation ... posix postgres_1 | selecting default max_connections ... 20 postgres_1 | selecting default shared_buffers ... 400kB postgres_1 | selecting default time zone ... Etc/UTC postgres_1 | creating configuration files ... ok postgres_1 | running bootstrap script ... 2020-02-25 02:38:12.326 UTC [80] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership postgres_1 | 2020-02-25 02:38:12.326 UTC [80] HINT: The server must be started by the user that owns the data directory. postgres_1 | child process exited with exit code 1 postgres_1 | initdb: removing contents of data directory "/var/lib/postgresql/data" postgresql_postgres_1 exited with code 1
Notice line 19: “FATAL: data directory “/var/lib/postgresql/data” has wrong ownership”. After reading the error message we noted on line 12 it reads “fixing permissions on existing directory /var/lib/postgresql/data … ok”. Also near the top of the output on line 3 it reads “The files belonging to this database system will be owned by user “postgres”.” followed by “This user must also own the server process.”. Interesting…
So after digging around a bit we found that indeed the user “postgres” must own the files in order for the db system to read them and that the container starts up as root. It appears that line 12 is trying to fix the issue, and from what we found online it will… If the data directory is on a Linux file system. Since we are attempting to mount these files from a Windows file system, it appears that “fixing the permissions” fails. No major surprise there. So what is the work around for us poor developers working on Windows machines?
Named Volumes to the Rescue
In order to get this to work we set up a named volume. In this scenario, Docker takes care of handling the files and where they are actually stored, so we don’t readily have access to the files, but we don’t really care all that much. We just want our data to persist and not get blown away when the container gets deleted.
Here is the new (working) docker-compose file with the named volume:
version: "3" services: postgres: image: "postgres" ports: - 5432:5432 environment: POSTGRES_USER: "MyUser" POSTGRES_PASSWORD: "Password!23" POSTGRES_DB: "example" volumes: - psql:/var/lib/postgresql/data volumes: psql:
Using this approach you may want to keep an eye on the named volumes on your system and clean them up when you are no longer using them. To get a list of the volumes on your machine use the following command:
docker volumes ls
That will dump out a list of volumes on your machine that looks something like:
DRIVER VOLUME NAME local 600de9fcef37a60b93c410f9e7db6b4b7f9966faf5f6ba067cc6cb55ee851198 local ae45bfac51d4fb1813bd747cc9af10b7d141cf3affa26d79f46f405ebfa07462 local b94806ba697f79c7003481f8fd1d65599e532c0e2223800b39a2f90b087d5127 local d02adf9ab33dfa22e154d25e13c5bb383a5969c19c1dd98cfa2ac8e560d87eb4 local postgresql_psql
Notice the last entry named “postgresql_psql”? That is the one we just created above. To remove it use the following command (Note: It will not allow you to remove the volume if it is referenced by a container, running or not, so you’ll want to stop and remove the container first):
docker volume rm postgresql_psql
This has had me tearing my hair out for a fair old chunk of time.
The main issue was I wanted to spin up a simple container with postgres in it for a little dev project I’m playing with. Historically I’ve used Heroku but I wanted to be a good modern dev and slam some containers about the boat.
The initial article I found had a few decent bits in it but I did run into issues straight away.
The first one was that I needed to sort the Docker for windows sharing out.
Docker Settings (TaskBar Tray) > Resources > File Sharing > C:
This then requested my admin user and password to allow permissions.
Next I set up the docker-compose.yml
file. This in itself caused a number of permissions problems.
version: "3"
services:
# Create a service named db.
db:
# Use the Docker Image postgres. This will pull the newest release.
image: "postgres"
# Give the container the name my_postgres. You can changes to something else.
container_name: "localpg"
# Setup the username, password, and database name. You can changes these values.
environment:
- POSTGRES_USER=john
- POSTGRES_PASSWORD=pwd0123456789
- POSTGRES_DB=mydb
# Maps port 54320 (localhost) to port 5432 on the container. You can change the ports to fix your needs.
ports:
- "54320:5432"
# Set a volume some that database is not lost after shutting down the container.
# I used the name postgres-data but you can changed it to something else.
volumes:
- postgresql-volume:/var/lib/postgresql/data
volumes:
postgresql-volume:
external: true
The main errors being
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
2019-10-17 16:09:15.251 UTC [77] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership
2019-10-17 16:09:15.251 UTC [77] HINT: The server must be started by the user that owns the data directory.
child process exited with exit code 1
initdb: removing contents of data directory "/var/lib/postgresql/data"
What I found with this was you needed to create a volume for docker as it just doesn’t seem to play nice with the windows file system at its rawest.
This involved running this command.
$ docker volume create --name=postgresql-volume
And making sure this was in my compose file
volumes:
postgresql-volume:
external: true
Over the weekend I finally got the chance to start reading A Curious Moon by Rob Conery which is a book on learning PostgreSQL by following the fictional Dee Yan as she is thrown into database administrator role at an aerospace startup.
I have a lot of experience using Microsoft’s SQL Server, but up until now, I haven’t touched PostgreSQL. For personal projects SQL Server’s cost and be prohibitive and the release of Rob’s book added up to a good time to give PostgreSQL a try.
Install Directly or not?
On the download section of the official Postgres site, there is an option to download an installer. This is the route I was going to at first, but in Rob’s book, he suggests using a VM for Postgres installation on Windows. This kicked off a lot of searching on my part and didn’t find a good definitive answer on why that is or isn’t the way to do.
In the end, I decided to try and run the Postgres process using Docker instead installing directly on Windows or dealing with a full VM.
Installing Docker
Head to this link and click the Get Docker link to download the installer. After the install is complete you will have to log out and back in. When I logged back in I got a message about Hyper-V not being enabled.
After logging back in I then got the following message about hardware-assisted virtualization not being enabled.
After tweaking my BIOS settings and logging back in I was greeted by the Docker welcome screen.
Open a command prompt and run the following command.
docker run hello-world
You should output that starts with the following if your installation is working.
Hello from Docker!
This message shows that your installation appears to be working correctly.
What about Postgres?
Getting up and going with a container running Postgres was pretty simple and could be done with the following command which will create a container and expose the port used by Postgres so it can be accessed from the host.
docker run -p 5432:5432 --name yourContainerName -e POSTGRES_PASSWORD=yourPassword -d postgres
The problem with this approach is if you ever need to rebuild the container for some reason, like a new version of Postgres is released, your data will be lost. Thankfully I found this blog post which shows how to use a secondary container for the data leaving the Postgres container able to be destroyed and recreated as needed. The following is the command I used to create my data container.
docker create -v /var/lib/postgresql/data --name PostgresData alpine
The above creates a container named PostgresData based on the Alpine image. It is important that the -v parameter matches the path that Postgres expects.
Now that we have a container that will keep our data safe let’s create the actual Postgres container with the following command.
docker run -p 5432:5432 --name yourContainerName -e POSTGRES_PASSWORD=yourPassword -d --volumes-from PostgresData postgres
The only difference from the first example run command is the addition of –volumes-from PostgresData which tells the container to use the PostgresData container.
If you run the docker ps -a command it will show you all your containers.
As you can see in my example I have two containers only one of which is actually running. Make sure you don’t remove the data container just because it will never show as running.
Connect to Postgres
To verify all was working I downloaded pgAdmin from here. Run the installer and then open the application. Right-click on Server and click Create > Server.
On the Create Server dialog enter a Name for your server and then switch over to the Connection tab.
On the Connection tab for Host use localhost and in the Password field use the password you used for POSTGRES_PASSWORD on the docker run command.
Click Save to close the dialog and connect to the server. The following is an example screenshot of what you will see showing the available databases on the server, which is just the default database in this case.
Wrapping Up
Make sure to check out the official docs here for more information as needed.
Other than the storage portion getting Postgres up and running in Docker was pretty simple. I hope like me this will give you a good jumping off point to learn more about both Docker and Postgres.
If anyone has any alternate ways to deal with persistent storage please leave a comment.
Also published on Medium.
PostgreSQL — это мощная и расширяемая система управления реляционными базами данных, которая широко используется в различных проектах. Docker, в свою очередь, представляет собой открытую платформу, которая упрощает процесс разработки, доставки и запуска приложений с помощью контейнеров.
Если вам нужно установить и настроить базу данных PostgreSQL для вашего проекта, использование Docker контейнера может быть удобным и эффективным решением. Вместо установки PostgreSQL локально на вашей машине, вы можете просто запустить контейнер с готовым образом PostgreSQL, который предоставляет все необходимые инструменты и настройки.
В данном руководстве мы приведем несколько примеров использования PostgreSQL Docker контейнера для работы с базами данных. Мы рассмотрим создание и запуск контейнера, настройку доступа к базе данных, импорт и экспорт данных, а также другие основные операции. Это руководство поможет вам быстро начать работу с PostgreSQL в Docker и упростит процесс разработки ваших проектов.
Примечание: перед началом работы, убедитесь, что у вас уже установлен Docker на вашей машине.
Установка и настройка PostgreSQL в Docker
Для установки и настройки PostgreSQL в Docker можно использовать официальный образ PostgreSQL, который предоставляется в Docker Hub.
- Установите Docker на свою операционную систему.
- Откройте командную строку или терминал и выполните команду:
docker pull postgres
Эта команда загрузит последнюю версию образа PostgreSQL с Docker Hub.
- После успешной загрузки образа запустите контейнер командой:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
Эта команда создаст и запустит контейнер с именем «some-postgres» и заданным паролем для пользователя «postgres».
- После запуска контейнера можно подключиться к базе данных PostgreSQL. Для этого выполните команду:
docker exec -it some-postgres psql -U postgres
Вы будете подключены к командной строке PostgreSQL. Теперь вы можете выполнять SQL-запросы и управлять базами данных.
Помимо основной команды для запуска контейнера, вы можете указать дополнительные параметры, такие как порт для доступа к базе данных и настройки volume.
Параметр | Описание |
---|---|
-p 5432:5432 |
Указывает порт, по которому можно подключиться к базе данных. В этом примере используется порт 5432. |
-v /my/own/datadir:/var/lib/postgresql/data |
Указывает местоположение для хранения данных базы данных. В этом примере используется путь /my/own/datadir . |
Теперь вы знаете, как установить и настроить PostgreSQL в Docker. Docker облегчает процесс установки и настройки базы данных и позволяет создавать отдельные изолированные среды для разработки или тестирования.
Шаг 1: Установка Docker и Docker Compose
Для работы с PostgreSQL в Docker необходимо установить Docker и Docker Compose на вашу машину. В этом разделе описан процесс установки на платформах Linux, macOS и Windows.
Linux
Для установки Docker и Docker Compose на Linux выполните следующие действия:
- Откройте терминал;
- Установите Docker следуя инструкциям по адресу: https://docs.docker.com/engine/install/;
- Установите Docker Compose следуя инструкциям по адресу: https://docs.docker.com/compose/install/;
- Завершите установку и проверьте версии установленных программ с помощью команд
docker --version
иdocker-compose --version
.
macOS
Для установки Docker и Docker Compose на macOS выполните следующие действия:
- Перейдите по адресу: https://docs.docker.com/desktop/mac/install/;
- Скачайте и установите Docker Desktop для macOS;
- Запустите Docker Desktop после установки и дождитесь его полной инициализации;
- Установите Docker Compose из официального репозитория по адресу: https://docs.docker.com/compose/install/;
- Завершите установку и проверьте версии установленных программ с помощью команд
docker --version
иdocker-compose --version
.
Windows
Для установки Docker и Docker Compose на Windows выполните следующие действия:
- Перейдите по адресу: https://docs.docker.com/desktop/windows/install/;
- Скачайте и установите Docker Desktop для Windows;
- Запустите Docker Desktop после установки и дождитесь его полной инициализации;
- Установите Docker Compose из официального репозитория по адресу: https://docs.docker.com/compose/install/;
- Завершите установку и проверьте версии установленных программ с помощью команд
docker --version
иdocker-compose --version
.
Шаг 2: Создание файлов конфигурации
После установки Docker и загрузки образа PostgreSQL следующим шагом является создание файлов конфигурации для контейнера базы данных.
Файлы конфигурации определяют параметры работы PostgreSQL, такие как порт, на котором будет доступна база данных, количество одновременных подключений и другие настройки.
Создание файлов конфигурации может осуществляться двумя способами:
- Использование готового файла конфигурации: вы можете использовать готовый файл конфигурации PostgreSQL и изменить в нем необходимые параметры.
- Создание нового файла конфигурации: вы можете создать новый файл конфигурации и определить в нем необходимые параметры.
Пример готового файла конфигурации:
Параметр | Значение |
---|---|
port | 5432 |
max_connections | 100 |
shared_buffers | 128MB |
work_mem | 4MB |
После создания или изменения файла конфигурации, сохраните его в отдельной директории на вашем компьютере. Затем, во время запуска контейнера, вы сможете указать этот файл в качестве параметра конфигурации.
Шаг 3: Запуск контейнера с PostgreSQL
После того, как вы установили Docker и загрузили образ PostgreSQL, вы можете переходить к запуску контейнера с базой данных PostgreSQL.
- Откройте командную строку или терминал, и перейдите в папку, где хранятся файлы Docker.
- Запустите следующую команду, чтобы создать и запустить контейнер PostgreSQL:
Запуск контейнера: | docker run --name my_postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres |
В этой команде:
--name my_postgres
— задает имя контейнера (в данном случае, my_postgres).-e POSTGRES_PASSWORD=mysecretpassword
— устанавливает пароль для пользователя postgres.-d postgres
— указывает, что используется образ PostgreSQL.
После запуска команды контейнер будет создан и запущен, и вы увидите хеш-код контейнера в выводе команды.
- Можно проверить, что контейнер успешно запустился, выполнив команду:
Проверка запущенных контейнеров: | docker ps |
Вы должны увидеть список запущенных контейнеров, включая контейнер с именем my_postgres.
Поздравляю! Вы успешно запустили контейнер с PostgreSQL. Теперь вы можете работать с базой данных, используя клиентские инструменты, такие как psql или pgAdmin.
Управление базами данных в Docker
Docker — популярная платформа для контейнеризации приложений. Работа с базами данных в Docker позволяет создавать и управлять изолированными средами для развития и развертывания баз данных.
Вот несколько команд для управления базами данных в Docker:
-
Запуск контейнера с базой данных: Для запуска контейнера с базой данных в Docker необходимо использовать команду
docker run
. Пример команды для запуска контейнера PostgreSQL:
docker run --name my_postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
-
Подключение к контейнеру с базой данных: Чтобы подключиться к контейнеру с базой данных, необходимо использовать команду
docker exec
. Пример команды для подключения к контейнеру PostgreSQL:
docker exec -it my_postgres psql -U postgres
-
Создание базы данных: Для создания новой базы данных в контейнере необходимо выполнить SQL-запросы с использованием соответствующего клиента. Например, можно использовать команду
CREATE DATABASE
в клиенте PostgreSQL. -
Резервное копирование и восстановление базы данных: Для резервного копирования и восстановления базы данных в Docker можно использовать различные инструменты, например,
pg_dump
иpg_restore
для PostgreSQL. -
Обновление базы данных: При обновлении приложения могут потребоваться изменения в схеме базы данных. В Docker можно использовать механизм миграций для автоматического обновления базы данных, например, с помощью инструмента
Flyway
. -
Остановка и удаление контейнера с базой данных: Чтобы остановить и удалить контейнер с базой данных, необходимо использовать команды
docker stop
иdocker rm
.
Управление базами данных в Docker предоставляет удобный способ создания и развертывания изолированных окружений для разработки и тестирования баз данных. Благодаря контейнеризации, базы данных могут быть запущены и остановлены в любое время, а также могут быть масштабированы в соответствии с требованиями вашего проекта.
Обратите внимание: перед использованием команд для работы с базами данных в Docker, убедитесь, что у вас установлен Docker и соответствующий образ базы данных.
Создание новой базы данных
Для создания новой базы данных в PostgreSQL Docker контейнере, вам понадобится выполнить несколько простых шагов.
- Запустите контейнер с помощью команды docker run и указанием необходимых параметров, таких как имя контейнера, порт и т.д.:
docker run --name my_postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
- Подключитесь к контейнеру с помощью docker exec:
docker exec -it my_postgres psql -U postgres
- После успешного подключения к контейнеру выполните следующую команду для создания новой базы данных:
CREATE DATABASE my_database;
- Выход из команды psql можно выполнить с помощью команды \q.
Теперь вы создали новую базу данных с именем my_database в PostgreSQL Docker контейнере. Вы можете использовать эту базу данных для хранения и управления вашими данными.
Обратите внимание, что в команде создания базы данных вы можете указать различные дополнительные параметры, такие как шаблон базы данных, кодировку и т.д. Это может быть полезным, если вы хотите настроить базу данных под ваши требования.
Подключение к базе данных
Для подключения к базе данных PostgreSQL, запущенной на Docker контейнере, необходимо выполнить следующие шаги:
- Установить Docker на свою машину, если он еще не установлен.
- Скачать образ PostgreSQL из Docker Hub с помощью команды:
docker pull postgres
- Создать новый контейнер с помощью команды:
docker run —name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
В этой команде мы создаем контейнер с именем my-postgres, задаем пароль для пользователя по умолчанию postgres и пробрасываем порт 5432, который используется PostgreSQL, на порт хоста.
- Проверить, что контейнер работает, выполните команду:
docker ps
Вы увидите список активных контейнеров, включая контейнер PostgreSQL my-postgres.
- Соединиться с контейнером PostgreSQL, используя любой инструмент для работы с базами данных PostgreSQL, такой как psql или любой графический интерфейс.
Используя psql, вы можете выполнить команду:
psql -h localhost -p 5432 -U postgres
Здесь мы указываем хост (localhost), порт (5432) и имя пользователя (postgres).
После этого вас попросят ввести пароль, который вы задали при создании контейнера.
Обратите внимание:
- Если вы используете графический интерфейс для работы с PostgreSQL, укажите адрес localhost и порт 5432 в настройках подключения.
- В примере выше мы использовали пароль «mysecretpassword», вы можете заменить его на свой пароль в команде создания контейнера.
Теперь вы можете подключиться к базе данных PostgreSQL, работающей в контейнере Docker, и начать работу с данными. Удачного использования!
Работа с данными в PostgreSQL
PostgreSQL – это мощная система управления реляционными базами данных с открытым исходным кодом. В этом разделе мы рассмотрим основные принципы работы с данными в PostgreSQL.
1. Создание таблицы
Для хранения данных в PostgreSQL необходимо создать таблицу. Для этого используется команда CREATE TABLE. В таблице вы определяете структуру данных, указывая набор столбцов и их типы.
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INTEGER,
department VARCHAR(100)
);
2. Вставка данных
Чтобы добавить данные в таблицу, используйте команду INSERT INTO. Указывайте столбцы, в которые вы хотите вставить данные, и значения для каждого столбца.
INSERT INTO employees (name, age, department)
VALUES ('John Doe', 30, 'IT');
3. Получение данных
Для получения данных из таблицы используйте команду SELECT. Укажите столбцы, которые вы хотите выбрать, и таблицу, из которой нужно получить данные.
SELECT name, age FROM employees;
4. Обновление данных
Если вам необходимо изменить данные в таблице, используйте команду UPDATE. Укажите таблицу, которую вы хотите обновить, и укажите значения для каждого столбца, которые нужно изменить.
UPDATE employees SET age = 35 WHERE id = 1;
5. Удаление данных
Если вам необходимо удалить данные из таблицы, используйте команду DELETE. Укажите таблицу, из которой нужно удалить данные, и условие, по которому будет происходить удаление.
DELETE FROM employees WHERE id = 1;
6. Сортировка данных
Чтобы отсортировать данные в таблице, используйте команду ORDER BY. Укажите столбец, по которому нужно отсортировать данные, и направление сортировки (ASC для сортировки по возрастанию, DESC для сортировки по убыванию).
SELECT name, age FROM employees ORDER BY age DESC;
7. Фильтрация данных
Для фильтрации данных используйте условие WHERE. Укажите условие, которое должны выполнить строки, чтобы быть включенными в результат.
SELECT name, age FROM employees WHERE department = 'IT';
8. Соединение таблиц
Если вам нужно объединить данные из нескольких таблиц, используйте команду JOIN. Укажите таблицы, которые нужно объединить, и условие, по которому будет происходить объединение.
SELECT employees.name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.id;
В данном разделе мы рассмотрели основные операции работы с данными в PostgreSQL. Вы можете использовать эти команды и операции для создания, вставки, выбора, обновления и удаления данных в ваших PostgreSQL таблицах.