Add instructions to run databases in docker.

This commit is contained in:
Arseny Balobanov 2022-03-31 17:40:40 +03:00
parent 28b48aada9
commit 55863b75ba
6 changed files with 51 additions and 3 deletions

View file

@ -22,3 +22,25 @@ sudo apt install postgresql
Тесты сами запускают базу данных в начале, и останавливают её в конце.
База данных работает от текущего пользователя во временной директории.
## Запуск postgres в docker
Даже если у вас linux (и уж тем более, если нет), вы можете не захотеть ставить postgres в систему.
Альтернативный способ — запустить бд в докере.
Для этого нужно установить docker и docker-compose по инструкции из [dockertest](../dockertest/README.md).
Добвиться успешного запуска
```
go test -v ./dockertest/...
```
Запускать тесты можно будет так:
```
(cd dao && docker-compose up -d && sleep 1 && env PGCONN="host=127.0.0.1 port=5432 database=shad-go user=gopher password=pass" go test -v ./... -count=1 || true && docker-compose down)
```
Эта команда стартует docker с postgresql, запускает тесты, передав им DSN через переменную окружения, удаляет контейнеры в конце.
Как подчистить контейнеры, если что-то пошло не так:
```
(cd dao && docker-compose down)
```

10
dao/docker-compose.yaml Normal file
View file

@ -0,0 +1,10 @@
version: '3'
services:
pg:
image: postgres:latest
environment:
POSTGRES_DB: shad-go
POSTGRES_USER: gopher
POSTGRES_PASSWORD: pass
ports:
- 5432:5432

View file

@ -9,8 +9,6 @@
go test -v ./dockertest/... -count=1
```
Только **после того, как тесты пройдут локально,** можете запушить решение в систему.
### С чего начать?
<details>

View file

@ -16,4 +16,4 @@
Мы рекомендуем использовать функциональность `SELECT FOR UPDATE`.
Комментарии по запуску postgres смотрите в задаче `dao`.
Комментарии по запуску postgres смотрите в задаче [dao](../dao/).

View file

@ -0,0 +1,10 @@
version: '3'
services:
pg:
image: postgres:latest
environment:
POSTGRES_DB: shad-go
POSTGRES_USER: gopher
POSTGRES_PASSWORD: pass
ports:
- 5432:5432

View file

@ -19,3 +19,11 @@ sudo apt install redis-server
Если вы работаете на другом дистрибутиве linux, воспользуйтесь своим пакетным менеджером.
Тесты сами запускают `redis` в начале, и останавливают его в конце.
## Запуск redis в docker
Комментарии по запуску бд в docker смотрите в задаче [dao](../dao/).
```
(cd shopfront && docker-compose up -d && sleep 1 && env REDIS="localhost:6379" go test -v ./... -count=1 || true && docker-compose down)
```