From 49e89a43fdb6613b08041995bb5548df409ef47f Mon Sep 17 00:00:00 2001 From: Fedor Korotkiy Date: Sat, 8 Apr 2023 17:48:12 +0400 Subject: [PATCH] Return of dockertest --- dockertest/README.md | 100 +++++++++++++++++++++++++++++++++ dockertest/docker-compose.yaml | 30 ++++++++++ dockertest/postgres/Dockerfile | 3 + dockertest/postgres/init.sql | 7 +++ 4 files changed, 140 insertions(+) create mode 100644 dockertest/README.md create mode 100644 dockertest/docker-compose.yaml create mode 100644 dockertest/postgres/Dockerfile create mode 100644 dockertest/postgres/init.sql diff --git a/dockertest/README.md b/dockertest/README.md new file mode 100644 index 0000000..72c6c79 --- /dev/null +++ b/dockertest/README.md @@ -0,0 +1,100 @@ +## dockertest + +### Что нужно сделать? + +Установить docker и добиться успешного запуска команды +``` +docker compose up +``` + +### С чего начать? + +
+ Дополнительные шаги для Windows 10 + +
+ +1. Установить WSL2 по [инструкции от Microsoft](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
+**Важно:** нужна именно вторая версия **WSL2**, проверьте, что она совместима с вашей системой.
+Если шаг 5 не работает, включите опцию `Windows Hypervisor Platform` (Settings -> Apps -> Apps & features -> Optional features -> More Windows Features -> включить чекбокс Windows Hypervisor Platform). + +2. Установите Docker Desktop по [инструкции](https://docs.docker.com/docker-for-windows/wsl/#download). Вероятно, выполнять шаги по активации поддержки WSL не потребуется, все подключится автоматически. + +3. Запустите Docker Desktop (никакие контейнеры запускать не надо, только если хотите убедиться в том, что все работает).
+Запустите установленную в п.1 Linux OS через WSL2.
+Далее используйте этот Linux для выполнения дальнейших шагов этого README. + +_Замечание_: запущенный, но уже не использующийся Docker Desktop с бекэндом WSL занимает впустую много оперативной памяти, см [issue](https://github.com/microsoft/WSL/issues/4166) - можно ограничить максимальный доступный ему объем (см. [workaround](https://github.com/microsoft/WSL/issues/4166#issuecomment-526725261)), либо отключить автозапуск Docker Desktop и останавливать сервис, когда вы его не используете. + +
+ +#### Установить docker + +https://docs.docker.com/engine/install/ + +После стандартной процедуры установки на Linux будет создана группа `docker`. +Чтобы использовать docker cli без sudo, нужно добавить себя в эту группу: +``` +sudo groupadd docker +sudo usermod -aG docker $USER +``` +После этого разлогиньтесь из os и залогиньтесь заново (или перезапустите систему). + +Для проверки можно запустить +``` +docker run hello-world +``` + +#### Запустить контейнеры не через тесты + +В директории `dockertest` выполнить +``` +docker compose up +``` + +### Что делать, если сразу не заработало? + +Поискать решение проблемы в интернете. + +Если решение найдено и проблема выглядит общей, сделать merge request с улучшением README. + +Если интернет не помог, спросить в чате. + +### docker-compose cheat sheet + +Запустить все контейнеры в daemon режиме пересобрав образы: +``` +docker compose up -d --build +``` + +Остановить все контейнеры: +``` +docker compose down +``` + +### Docker cheat sheet + +Получить список образов: +``` +docker images +``` + +Список всех контейнеров: +``` +docker ps -a +``` + +Остановить контейнер: +``` +docker stop +``` + +Удалить контейнер: +``` +docker rm +``` + +Удалить образ: +``` +docker rmi +``` diff --git a/dockertest/docker-compose.yaml b/dockertest/docker-compose.yaml new file mode 100644 index 0000000..b84dede --- /dev/null +++ b/dockertest/docker-compose.yaml @@ -0,0 +1,30 @@ +version: '3' +services: + pg: + build: ./postgres/ + environment: + POSTGRES_DB: test + POSTGRES_USER: gopher + POSTGRES_PASSWORD: pass + ports: + - 5432:5432 + + redis: + image: "redis:alpine" + hostname: redis + ports: + - "6379:6379" + + prometheus: + image: prom/prometheus:latest + ports: + - 9090:9090 + + grafana: + image: grafana/grafana:latest + environment: + - GF_SECURITY_ADMIN_USER=gopher + - GF_SECURITY_ADMIN_PASSWORD=pass + - GF_USERS_ALLOW_SIGN_UP=false + ports: + - 3000:3000 diff --git a/dockertest/postgres/Dockerfile b/dockertest/postgres/Dockerfile new file mode 100644 index 0000000..8566692 --- /dev/null +++ b/dockertest/postgres/Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:latest + +COPY init.sql /docker-entrypoint-initdb.d/10-init.sql diff --git a/dockertest/postgres/init.sql b/dockertest/postgres/init.sql new file mode 100644 index 0000000..459cdb3 --- /dev/null +++ b/dockertest/postgres/init.sql @@ -0,0 +1,7 @@ +create table Role( + RoleID SERIAL PRIMARY KEY, + RoleName varchar(50) +); + +insert into Role(RoleName) +values ('Admin'),('User');