[Fun Docker Project] 80 и 90 воспоминаний, создавайте ретро-китайские игры для DOS за 10 минут, играйте в 1898 игр!
[Fun Docker Project] 80 и 90 воспоминаний, создавайте ретро-китайские игры для DOS за 10 минут, играйте в 1898 игр!

1.Предисловие

Когда я учился в начальной школе, несколько одноклассников из моего класса были выходцами из относительно богатых семей. Их родители купили им электронный словарь BBK. Первоначально это был инструмент обучения, но однажды они обнаружили, что могут загружать игры, и поэтому они превратились в обучающую машину. игровая консоль.

В то время у меня не было этой машины, поэтому я мог только смотреть, как они играют. Я до сих пор помню, как дал домашнее задание однокласснику, чтобы он списал, а затем одолжил его нарды, чтобы сыграть в «Легенду о героях» Цзинь Юна, что было очень увлекательно. Позже я также играл в «Убийцу демонов» и «Башню демонов»…

В мгновение ока я работаю уже много лет...

Давайте сегодня вспомним наши детские игры.

2. Отображение проекта

Просто добавьте несколько фотографий:

2d2152aefff4cd3ac04ecb2ecb40e274.png
2d2152aefff4cd3ac04ecb2ecb40e274.png
0883c841c73871b1341edfd1e2599c3f.png
0883c841c73871b1341edfd1e2599c3f.png
fb998df7fa96a7b4f8cdc8cf76faf7c8.png
fb998df7fa96a7b4f8cdc8cf76faf7c8.png
7ea1d4f1b4afddf85ccf03e96fb99f3f.png
7ea1d4f1b4afddf85ccf03e96fb99f3f.png
b22232140b0564a01e554112536644dd.png
b22232140b0564a01e554112536644dd.png

<img src="https://img.laoda.de/i/2023/07/22/118uku3-0.webp" alt="image-20230722225209477" style="zoom: 50%;" />

<img src="https://img.laoda.de/i/2023/07/22/11931dd-0.webp" alt="image-20230722225248152" style="zoom:50%;" />

2.1 Особенности

  • Поддержка развертывания Docker в один клик
  • Китайская коллекция игр для DOS, в настоящее время насчитывает 1898 игр.
  • Поддержка архивирования

3. Связанные адреса

ВоркованиеDemo:https://games.gugu.ovh/

GitHubОфициальный склад:https://github.com/rwv/chinese-dos-games

4. Настройте среду

  • сервер:Легкий сервер приложений Tencent Гонконг 24 Юань / луна VPS один Гугу построил его сам и использовал те, что были из Гонконга.Легкий сервер приложений Tencent,(На этот раз лучше выбрать вариант с большей пропускной способностью.,И это машина с довольно хорошими схемами) если это новичок, который только начал играть,Можно выбратьRacknerdиз Высокая стоимость исполнениясервер(Обратите внимание на местность и выберите город на западе США.)
  • Система: Дебиан 11 (ДД-скрипт Не требуется ДД, даже с оригинальной системой Хорошо, я буду использовать его во всех последующих уроках. Debian или Ubuntu Построить~)
  • Установлено Docker、Docker-compose(Связанные скрипты
  • 【Не требуется Но рекомендуется】Доменное имя и разрешить его на сервере(Покупка доменного имени, разрешение доменного имени Видеоурок
  • 【Не требуется】нестивперед Установлено панель пагоды зарубежная версия aapanel,и Установлено Nginx(Адрес установки
  • 【Не требуется В этом уроке используется】Установлено Nginx Proxy Manager(Связанные руководства

Требования к серверу: лучше всего иметь большую пропускную способность и больший жесткий диск. Игры 1898 занимают около 36 ГБ, и их необходимо загружать вручную.

5. Создайте видео

5.1 YouTube

Видео адрес:https://youtu.be/B_tZLDbBN0I

5.2 Билибили

Билибили:https://www.bilibili.com/video/BV1nc411w7JD/

6. Метод строительства

Если вы не используете облегченный сервер приложений Tencent Cloud, вы можете сразу перейти к разделу 6.1.

Установите систему (облегченный сервер приложений Tencent Cloud)

<img src="https://img.laoda.de/i/2022/08/16/zlyhcz-2.webp" alt="e59713fba8726d3cb55ae11bca83fe3c.png" style="zoom:33%;" />

Самая большая особенность легкого сервера Tencent Cloud заключается в том, что «Легкий» по сравнению с CVM больше подходит для начала работы новичкам. Здесь выбираем между. Docker Базовый образ, можно сохранить для последующей установки. Docker шаги (Если вы настаиваете на использовании домашнего сервера, установите его здесь. Docker Зеркало также поможет вам настроить источники внутреннего зеркала для ускорения доступа. docker Зеркальные ресурсы) Не рекомендуется использовать отечественные. 。

Войдите в систему (облегченный сервер приложений Tencent Cloud)

<img src="https://img.laoda.de/i/2022/08/16/zlzlj7-2.webp" alt="2722040ee311eb4a9ebf2a4945bf38f4.png" style="zoom:25%;" />

<img src="https://img.laoda.de/i/2022/08/16/zm0gv8-2.webp" alt="c0b5d360053746c4095d592967ee401f.png" style="zoom:25%;" />

<img src="https://img.laoda.de/i/2022/08/16/zm1vqw-2.webp" alt="e0ba858f021b846ad0abc27acf5008c2.png" style="zoom:25%;" />

6.1 Установите Docker и Nginx Proxy Manager

Вы можете напрямую обратиться к этому контенту:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 Создайте каталог установки

Создайте каталог установки:

Язык кода:shell
копировать
sudo -i

mkdir -p /root/data/docker_data/games

cd /root/data/docker_data/games
Язык кода:shell
копировать
vim docker-compose.yml

В разделе «Английский метод ввода» нажмите i

Здесь есть два метода создания, поскольку образ докера для игры 36G слишком велик, автор просто инкапсулировал более 40 классических игр для DOS в образ докера. Поэтому, если жесткий диск вашего сервера недостаточно велик, вы можете установить его напрямую. способ по умолчанию.

Язык кода:yaml
копировать
version: '3.3'
services:
    dosgame-web-docker:
        container_name: dosgame
        ports:
            - '8090:262'  #8090 можно изменить на порт, не занятый другими серверами.
#         volumes:
#             - '/root/data/docker_data/games/chinese-dos-games:/app/static/games'
        image: 'oldiy/dosgame-web-docker:latest'

После внесения изменений обратите внимание на переключение на английский метод ввода, а затем нажмите esc,Затем :wq Сохраняем и выходим.

Если объем жесткого диска вашего сервера превышает 36 ГБ, вы можете попробовать установить игры 1989 года напрямую.

Язык кода:yaml
копировать
version: '3.3'
services:
    dosgame-web-docker:
        container_name: dosgame
        ports:
            - '8090:262'  #8090 можно изменить на порт, не занятый другими серверами.
        volumes:
            - '/root/data/docker_data/games/chinese-dos-games:/app/static/games'
        image: 'oldiy/dosgame-web-docker:latest'

После внесения изменений обратите внимание на переключение на английский метод ввода, а затем нажмите esc,Затем :wq Сохраняем и выходим.

затем в

Язык кода:shell
копировать
cd /root/data/docker_data/games/

git clone https://github.com/rwv/chinese-dos-games.git

cd chinese-dos-games/

python3 download_data.py
image-20230724170023076
image-20230724170023076

Обратите внимание, что по умолчанию здесь загружаются 1989игры.,Всего около 36G,если пропускная способность вашего сервера невелика,,Это может занять очень и очень много времени. Именно поэтому мы рекомендуем всем использовать зарубежные серверы.,Пропускная способность обычно больше,напримерRacknerd(Конкурс внимания, западный регион),Скорость загрузки — скорость порта G.,Теоретическое значение составляет 128 М/с.,Он загружается относительно быстро.

Если оно появляется:

Язык кода:shell
копировать
-bash: git: command not found

входить:

Язык кода:shell
копировать
apt update -y
apt install git -y

Запустите еще раз:

Язык кода:shell
копировать
git clone https://github.com/rwv/chinese-dos-games.git

Вот и все.

Если оно появляется:

Язык кода:shell
копировать
-bash: python: command not found

Это означает, что Python не установлен на вашем компьютере. Вам необходимо его установить.

В качестве примера мы возьмем систему Debian:

Язык кода:shell
копировать
sudo apt update

sudo apt install python3

python3 download_data.py

Вот и все.

Если вас беспокоит отключение SSH?,или Вы не хотите все время ждать,Я хочу, чтобы он загружался медленно в фоновом режиме,Вы можете попробовать ГугуживпередобщийизScreenКак использовать:Linux Вспомогательные инструменты Screen —— Больше не нужно бояться завершения задач из-за прерывания сетевого подключения!

После завершения загрузки вы можете запустить:

Язык кода:shell
копировать
ls -l /root/data/docker_data/games/chinese-dos-games/bin | grep "^-" | wc -l

Просмотр количества файлов в папке。Неудивительно, что это должно отображаться1898

Вы также можете использовать:

Язык кода:shell
копировать
du -sh /root/data/docker_data/games

Подсчитайте общий размер папки, и он должен показать:

Язык кода:shell
копировать
36G /root/data/docker_data/games

Если проблем нет, можем запустить:

Язык кода:shell
копировать
cd /root/data/docker_data/games

docker-compose up -d 

или

Язык кода:shell
копировать
/root/data/docker_data/games

docker compose up -d

Зависит от вашего докера composeиз Версия,Нет ничего нового-из

Ожидание получения изображения Вот и все.

6.3 Включите брандмауэр сервера (не обязательно) и получите доступ к веб-странице.

Если вы используете машину крупного производителя, такого как Alibaba Cloud, Tencent Cloud, Oracle, Azure и т. д., вам может потребоваться открыть порт брандмауэра. 8090

Например, способ открытия Tencent Cloud следующий (некоторые поставщики услуг не имеют собственного брандмауэра панели, поэтому этот шаг не обязателен):

<img src="https://img.laoda.de/i/2022/06/30/zlio5h-2.webp" alt="image-20220630215240864" style="zoom: 25%;" />

<img src="https://img.laoda.de/i/2022/06/30/10h3dqt-2.webp" alt="image-20220630220546335" style="zoom: 25%;" />

Пример на картинке заполнен 5230,Заполните примечанияизда memos,Здесь мы заполняем 8090,Заполните пример games , просто подтвердите (если вы находитесь в docker-compose Изменено в файле 9009,Вам нужно заполнить это здесь 9009,и так далее)

<img src="https://img.laoda.de/i/2022/08/19/o4byqz-2.webp" alt="image-20220819145844555" style="zoom: 25%;" />

Проверьте, занят ли порт (начните с 8090 (например), введите:

Язык кода:shell
копировать
lsof -i:8090  #Проверять 8090 Порт занят?,если занято,Переопределить порт

Если ничего не появляется, это означает, что порт не занят и мы можем продолжить следующие операции ~

Если оно появляется:

Язык кода:shell
копировать
-bash: lsof: command not found

бегать:

Язык кода:shell
копировать
apt install lsof  #Установить lsof

Если порт не занят (если занят, измените порт, например, измените его на 8081,Уведомление docker И командную строку, и фаервол надо менять)

наконец:

Язык кода:shell
копировать
cd /root/data/docker_data/games    # приходить dockercompose В папке, где находится файл

docker-compose up -d 

Теоретически,Подождите зеленогоизdoneслова,

мы можем войти http://ip:8090 Посетил.

Уведомление:

1. Не знаю сервера IP,Вы можете напрямую использовать командную строкувходить:curl ip.sb,Будет отображен IP текущего сервера.

2. Если вы столкнулись с недоступностью, проверьте еще раз, открыт ли соответствующий порт в брандмауэре панели Pagoda и внутреннем брандмауэре поставщика услуг.

Но теперь для доступа мы по-прежнему используем порт IP+, что недостаточно элегантно. В обычных обстоятельствах нам необходимо добавить https на веб-страницу! Сделайте Интернет безопаснее!

namesilo выше xyz Доменное имя с суффиксом действует один год. 7 Юани можно выбрасывать каждый год. (Пустяки, по названию Плата за продление шестизначного номера xyz всегда составляет 0,99 доллара США. = =)

Если вы хотите использовать его в течение длительного времени, рекомендуется купить его. com Доменное имя с суффиксом более формально и его можно вводить gugugege получить 1 Скидка в долларах США (если она не удалась, вы можете оставить отзыв в области комментариев ~)

namesilo Поставляется с защитой конфиденциальности,Гугу использовал этот,Цена также относительно низкая среди этих регистраторов.,Ключевым моментом является то, что его компания не похожа на других регистраторов доменных имен.,№ 7788изрутина!(Это просто какой-то фоновый интерфейсуродливый древний = =)

[Покупка доменного имени] Код скидки Namesilo и руководство по разрешению доменных имен (с рекомендациями и мерами предосторожности при покупке сервера)

Давайте посмотрим вниз!

7. Обратный прокси

Для доступа к нашему сервису нам нужно использовать доменное имя вместо IP+порта!

7.1 Использование прокси-менеджера Nginx

Добавление поворота прокси Извперед,Убедитесь, что вы завершили разрешение доменного имени.,Не будетиз Вы можете посмотреть это:Доменное имя и разрешить его на сервереПокупка доменного имени, разрешение доменного имени Видеоурок

<img src="https://img.laoda.de/i/2022/10/16/n6t02e-2.webp" alt="image-20221016140213282" style="zoom:33%;" />

После этого войдите в систему Nginx Proxy Manager(Не будетизпосмотри на это:Установите прокси-менеджер Nginx.Связанные руководства))

Уведомление:

Nginx Proxy Менеджер (далее – НПМ) будет использоваться 80443 порт, поэтому эта машина не может его занять (например, изначально у нее был Nginx)

Просто добавьте несколько фотографий:

<img src="https://img.laoda.de/i/2022/05/02/kfes4s_7.webp" alt="image-20220502123517401" style="zoom: 33%;" />

<img src="https://img.laoda.de/i/2023/05/27/lvep5w-0.webp" alt="image-20230527132253249" style="zoom: 33%;" />

Обратите внимание на заполнение соответствующего доменное имяIP и порт,Согласно статье,должно быть 8090

Заполните IP:

если Nginx Proxy Manager и games На том же сервере вы можете ввести в терминале:

Язык кода:shell
копировать
ip addr show docker0

Просмотрите соответствующий внутренний IP-адрес контейнера Docker.

<img src="https://img.laoda.de/i/2022/09/29/pcdnz5-2.webp" style="zoom:50%;" />

В противном случае заполните напрямую games Сервер, где IP Вот и все.

<img src="https://img.laoda.de/i/2022/04/03/h9azjx_7.webp" alt="image-20220403104353185" style="zoom: 33%;" />

Откройте его еще раз и проверьте следующее:

<img src="https://img.laoda.de/i/2022/10/16/n7nn6e-2.webp" alt="image-20221016140356324" style="zoom:50%;" />

Затем Просто используй этодоменное имя Приходить Установить Посетил.

7.2 Использование панели «Пагода»

Я обнаружил, что многие друзья до сих пор привыкли использовать панель Pagoda, и вот обратная конфигурация панели Pagoda:

Создайте новый сайт напрямую без базы данных или php, чистая статика и все.

Затем откройте следующую конфигурацию и измените конфигурацию Nginx.

<img src="https://img.laoda.de/i/2022/08/19/ov4xrt-2.webp" alt="image-20220819150345725" style="zoom: 33%;" />

<img src="https://img.laoda.de/i/2022/08/19/owbbkb-2.webp" alt="image-20220819150542867" style="zoom: 33%;" />

Код выглядит следующим образом:

Язык кода:text
копировать
    location / {
      proxy_pass http://127.0.0.1:8090/;       # Будьте осторожны и измените его на тот порт, который вы действительно используете.
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

Этот метод подходит для 90% изобратный прокси может быть эффективным,Затем Просто используй этодоменное имя Приходить Установить Посетил.

Некоторые студенты могут спросить, почему бы просто не использовать функцию обратного прокси, которая поставляется с Pagoda.

<img src="https://img.laoda.de/i/2022/08/19/oxf800-2.webp" alt="image-20220819150730128" style="zoom: 33%;" />

Это также возможно, но сам Гугу уже сталкивался с ситуацией, когда при наличии нескольких веб-сайтов, которые необходимо отменить, при настройке здесь будет сообщаться об ошибке = =

Поэтому позже я перестал его использовать и просто использовал метод выше для управления им.

8. Руководство по использованию

Справочное видео.

8.1 Обновление игры

Как правило, необходимости в обновлении нет. Автор давно прекратил обновления, но здесь мы по-прежнему предоставляем базовый метод обновления для приложений, установленных с помощью docker-compose.

Язык кода:shell
копировать
cd /root/data/docker_data/games

docker-compose down 

cp -r /root/data/docker_data/games /root/data/docker_data/games.archive  # На всякий случай заранее сделайте резервную копию

docker-compose pull

docker-compose up -d    # пожалуйста, не используй docker-compose stop остановить контейнер, поскольку для этого требуется дополнительное время на ожидание остановки контейнера; up -d Когда вы напрямую обновляете контейнер, он автоматически останавливается и немедленно перестраивает новый контейнер, поэтому нет необходимости тратить это время.

docker image prune  # prune Команда используется для удаления тех, которые больше не используются. docker объект. Удалить все элементы, которые не были tag Отметьте и изображения, которые не используются контейнерами

намекать:

Язык кода:shell
копировать
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

входить y

Приложения, созданные с использованием Docker, очень легко обновлять~

8.2 Удаление игр

Язык кода:shell
копировать
cd /root/data/docker_data/games

docker-compose down

cd ..

rm -rf /root/data/docker_data/games  # Полностью удалить данные, сопоставленные с локальными

Может быть удален очень чисто.

9. Часто задаваемые вопросы

  • В некоторых играх нет инструкций для кнопок.,Возможно, вам придется попробовать это на клавиатуре самостоятельно.,ОбычноshiftaltenterкосмосcommandzxЭти ключи,Попробуйте сами.
  • В некоторых играх могут быть ошибки,каждый можетОставьте отзыв

10. Концовка

Желаю всем удачи и не стесняйтесь спрашивать, если у вас есть какие-либо вопросы. GitHub нести Issues,Вы также можете общаться и обсуждать друг с другом в комментариях.

В то же время студенты, у которых есть возможность внести свой вклад в проект, также могут активно присоединиться. проект Приходите и внесите свой вклад!

наконец,Спасибо разработчикам за их труд,Давайте воспользуемся таким прекрасным проектом!

Ссылки

GitHubОфициальный склад:https://github.com/rwv/chinese-dos-games/

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose