Скачивание контейнера:
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
(и не забыть пробросить порт для соединения с базой снаружи):
docker run --rm -it -p 5432:5432 ghcr.io/all-cups/it_one_cup_sql --leave-running
Фиксирование сида возможно с помощью переменной окружения 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 \
--mount "type=bind,src=$(pwd)/my-solution.sql,dst=/tmp/player1-solution.sql" \
--mount "type=bind,src=$(pwd)/quick_start.sql,dst=/tmp/player2-solution.sql" \
--mount "type=bind,src=$(pwd)/init.sql,dst=/tmp/init.sql" \
--mount "type=bind,src=$(pwd)/my-options.toml,dst=/tmp/options.toml" \
--rm -it -e SEED=123456 ghcr.io/all-cups/it_one_cup_sql \
--solution /tmp/player1-solution.sql \
--solution /tmp/player2-solution.sql \
--dump-init /tmp/init.sql \
--options /tmp/options.toml \
--log INFO
Обратите внимание, что в этом примере:
$(pwd)
- это текущий каталог (хост машины)- Файл
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
- Получить нужную информацию:
select * from final_world.players;
- Остановить контейнер:
docker stop dump-explorer