Смотри FAQ
docker run --rm -i -p 5432:5432 -e SEED=123 --mount "type=bind,src=$(pwd)/solution.sql,dst=/tmp/player1.sql" --mount "type=bind,src=$(pwd)/solution_02.sql,dst=/tmp/player2.sql" ghcr.io/all-cups/it_one_cup_sql --solution /tmp/player1.sql --solution /tmp/player2.sql --leave-running
cat solution.sql | docker run --rm -i -p 5432:5432 -e SEED=123 ghcr.io/all-cups/it_one_cup_sql --solution - --leave-running
Скачивание контейнера:
docker pull ghcr.io/all-cups/it_one_cup_sql
Запуск (с одним игроком и пустым решением):
docker run --rm -it ghcr.io/all-cups/it_one_cup_sql
Настройки мира лежат в options.toml
Ваше решение можно передать через stdin с помощью аргумента --solution -
(вместо -
можно указать путь к файлу, но в таком случае нужно чтобы он был доступен контейнеру):
cat solution.sql | docker run --rm -i ghcr.io/all-cups/it_one_cup_sql --solution -
Контейнер завершится, как только игра закончится.
Если хочется посмотреть в базу после окончания игры, можно использовать аргумент --leave-running
.
Внутри контейнера поднимается база для создания логов на порту 5432, а также по базе на каждое решение на портах 5433, 5434 и тд.
При желании можно пробросить нужный порт для соединения с базой снаружи:
docker run --rm -it -p 5433:5433 ghcr.io/all-cups/it_one_cup_sql --leave-running
Либо запустить psql
изнутри запущенного контейнера:
docker exec -it <container_name> psql --host localhost --port 5433 --username postgres postgres
Фиксирование сида возможно с помощью переменной окружения SEED
:
docker run --rm -it -e SEED=123 ghcr.io/all-cups/it_one_cup_sql
Другие доступные параметры запуска контейнера можно увидеть с помощью параметра --help
:
docker run --rm -it ghcr.io/all-cups/it_one_cup_sql --help
Для двух решений с сохранением содержимого init.sql и передачей своего файла настроек мира.
docker run \
--volume $(pwd):/tmp \
--rm -it -e SEED=123456 ghcr.io/all-cups/it_one_cup_sql \
--solution /tmp/solution.sql \
--solution /tmp/quick_start_with_trade.sql \
--dump-init /tmp/init.sql \
--options /tmp/options.toml \
--log INFO
docker run ^
--volume %cd%:/tmp ^
--rm -it -e SEED=123456 ghcr.io/all-cups/it_one_cup_sql ^
--solution /tmp/solution.sql ^
--solution /tmp/quick_start_with_trade.sql ^
--dump-init /tmp/init.sql ^
--options /tmp/options.toml ^
--log INFO
Обратите внимание, что в этом примере:
$(pwd)
/%cd%
- это текущий каталог хост машины- Файл
init.sql
должен существовать перед запуском (он будет перезаписан) - Параметр
--log INFO
можно заменить на--log DEBUG
для детализации ошибок
Пример просмотра дампа игры с помощью докера:
- Поднять базу данных:
docker run --rm --detach --name dump-explorer --env POSTGRES_PASSWORD=verysecret postgres
- Загрузить дамп:
docker exec -i dump-explorer pg_restore --dbname postgres --username postgres < game.dump
- Подключиться к базе:
docker exec -it dump-explorer psql --host localhost --username postgres postgres
- Получить нужную информацию:
select * from final_world.players;
- Остановить контейнер:
docker stop dump-explorer