Difference between revisions of "Docker"
Line 8: | Line 8: | ||
Mac => https://docs.docker.com/desktop/install/mac-install/ | Mac => https://docs.docker.com/desktop/install/mac-install/ | ||
+ | |||
===== Build ===== | ===== Build ===== | ||
Once the software is installed, you'll have to build a container based on Bebot itself + docker elements. | Once the software is installed, you'll have to build a container based on Bebot itself + docker elements. | ||
+ | |||
So you can download Bebot code (either from Official/Stable or Sandbox/Dev) as .zip (or using git pull command). | So you can download Bebot code (either from Official/Stable or Sandbox/Dev) as .zip (or using git pull command). | ||
− | Once done you'll have a Bebot folder in which you will create 2 text files : | + | NOTE : you can already edit files in Conf/ folder (if you know /howwhat to do !). Otherwise you'll do it interactively later. |
+ | |||
+ | |||
+ | Once done you'll have a Bebot folder (let's name it "befolder" for later reference) in which you will create 2 text files : | ||
+ | |||
− | Dockerfile (with no extension) | + | "Dockerfile" (with no extension) |
<pre> | <pre> | ||
Line 37: | Line 43: | ||
</pre> | </pre> | ||
− | docker-entrypoint.sh | + | |
+ | "docker-entrypoint.sh" | ||
<pre> | <pre> | ||
Line 57: | Line 64: | ||
</pre> | </pre> | ||
− | + | ||
+ | Then in command line, you'll move into that folder to send the following command : | ||
docker build -t bebot-buildname . | docker build -t bebot-buildname . | ||
− | (you can change "buildname" for anything you like but then you'll replace it below accordingly | + | (you can change "buildname" for anything you like but then you'll replace it below accordingly) |
+ | |||
+ | |||
+ | If all goes fine you should see something like "Building X.Ys (10/10) FINISHED" and several blue lines starting with "=>". | ||
+ | |||
+ | |||
+ | NOTE : if you already have a SQL server you can use it & skip to "Run" below. Otherwise you must run a container for Database. | ||
+ | |||
+ | The principle is then nearly the same. First obtain the base files by doing : | ||
+ | |||
+ | docker pull mariadb:X.Y | ||
+ | |||
+ | (where X.Y is the version you want like 10.2 for example) | ||
+ | |||
+ | |||
+ | ===== Run ===== | ||
+ | |||
+ | We're now ready to run our container(s) : 1 only if we want Bebot + your usual SQL server, or 2 for Bebot + SQL both as Docker containers. | ||
+ | |||
+ | |||
+ | For SQL (optional) : | ||
+ | |||
+ | docker run --name mariadb-containername -e MYSQL_ROOT_PASSWORD=mypass -p 3306:3306 -d mariadb:X.Y --restart=always | ||
+ | |||
+ | (where X.Y is the version you pulled earlier ; you can change "buildname" for anything you like but then you'll replace it below accordingly) | ||
+ | |||
+ | |||
+ | For Bebot (mandatory) : | ||
+ | |||
+ | Windows : docker run -d --rm --name bebot-containername --memory=128M -v C:\Folder\befolder\conf:\bebot\Conf -v C:\Folder\befolder\conf\log:\bebot\log -v C:\Folder\befolder\conf\Commodities:\bebot\Commodities bebot-buildname | ||
+ | |||
+ | (you must replace "buildname" and "C:\Folder\befolder" accordingly to your system ; "containername" is free to choose ; all path use antislashes \) | ||
+ | |||
+ | Mac/Linux : docker run -d --rm --name bebot-containername --memory=128M -v /path/to/befolder/conf:/bebot/Conf -v /path/to/befolder/log:/bebot/log -v /path/to/befolder/Commodities:/bebot/Commodities bebot-buildname | ||
+ | |||
+ | (you must replace "buildname" and "/path/to/befolder" accordingly to your system ; "containername" is free to choose ; all path use slashes /) | ||
+ | |||
+ | |||
+ | ===== Control ===== | ||
+ | |||
+ | Now to control if your container(s) run properly, and to control them you have a set of commands. | ||
+ | |||
+ | To show a list of running container(s) : docker ps | ||
+ | |||
+ | To enter a given container interactively : docker exec -it <full-containername> | ||
+ | |||
+ | Once inside, you command line window becomes the bot itself ; so you can see what the bot does realtime (sent & received datas, etc). | ||
+ | |||
+ | NOTE : if it's bot's 1st run & you didn't edit Conf/ files earlier, it's time to fill all infos (account/pass, char, game server, mysql credentials, etc). | ||
+ | |||
+ | If the bot is set correctly it should go online in the game and become reachable/responsive as expected. | ||
+ | |||
+ | To exit the entered container : Ctrl+p Ctrl+q | ||
+ | |||
+ | To stop a given container : docker stop <full-containername> (or Ctrl+c while entered in interactive mode upper) | ||
+ | |||
+ | |||
+ | ===== Conclusion ===== | ||
− | + | This guide is a work in progress and will evolve as we find improvements or tricks. | |
− |
Revision as of 21:41, 5 December 2023
Docker
So using Docker can save you some installation hassle, but you'll need to have it installed properly - depending on system hosting your bot(s) :
Windows => https://docs.docker.com/desktop/install/windows-install/
Linux => https://docs.docker.com/desktop/install/linux-install/
Mac => https://docs.docker.com/desktop/install/mac-install/
Build
Once the software is installed, you'll have to build a container based on Bebot itself + docker elements.
So you can download Bebot code (either from Official/Stable or Sandbox/Dev) as .zip (or using git pull command).
NOTE : you can already edit files in Conf/ folder (if you know /howwhat to do !). Otherwise you'll do it interactively later.
Once done you'll have a Bebot folder (let's name it "befolder" for later reference) in which you will create 2 text files :
"Dockerfile" (with no extension)
FROM alpine:latest ENTRYPOINT ["/sbin/tini", "-g", "--"] CMD ["/bebot/docker-entrypoint.sh"] RUN apk --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/community/ add \ php82-cli php82-sqlite3 php82-phar php82-curl php82-sockets php82-pdo php82-pdo_sqlite \ php82-pdo_mysql php82-mbstring php82-ctype php82-bcmath php82-json php82-posix php82-simplexml \ php82-dom php82-pcntl php82-zip php82-opcache php82-fileinfo php82-mysqli \ tini \ sudo \ && \ adduser -h /bebot -s /bin/false -D -H bebot COPY --chown=bebot:bebot . /bebot RUN sudo ln -s /usr/bin/php82 /usr/bin/php8 USER bebot WORKDIR /bebot
"docker-entrypoint.sh"
#!/bin/ash # shellcheck shell=dash errorMessage() { echo "$*" exit 1 } EXITCODE=255 while [ "$EXITCODE" -eq 255 ]; do trap "" TERM # shellcheck disable=SC2086 /usr/bin/php8 StartBot.php "$@" EXITCODE=$? trap - TERM done exit $EXITCODE
Then in command line, you'll move into that folder to send the following command :
docker build -t bebot-buildname .
(you can change "buildname" for anything you like but then you'll replace it below accordingly)
If all goes fine you should see something like "Building X.Ys (10/10) FINISHED" and several blue lines starting with "=>".
NOTE : if you already have a SQL server you can use it & skip to "Run" below. Otherwise you must run a container for Database.
The principle is then nearly the same. First obtain the base files by doing :
docker pull mariadb:X.Y
(where X.Y is the version you want like 10.2 for example)
Run
We're now ready to run our container(s) : 1 only if we want Bebot + your usual SQL server, or 2 for Bebot + SQL both as Docker containers.
For SQL (optional) :
docker run --name mariadb-containername -e MYSQL_ROOT_PASSWORD=mypass -p 3306:3306 -d mariadb:X.Y --restart=always
(where X.Y is the version you pulled earlier ; you can change "buildname" for anything you like but then you'll replace it below accordingly)
For Bebot (mandatory) :
Windows : docker run -d --rm --name bebot-containername --memory=128M -v C:\Folder\befolder\conf:\bebot\Conf -v C:\Folder\befolder\conf\log:\bebot\log -v C:\Folder\befolder\conf\Commodities:\bebot\Commodities bebot-buildname
(you must replace "buildname" and "C:\Folder\befolder" accordingly to your system ; "containername" is free to choose ; all path use antislashes \)
Mac/Linux : docker run -d --rm --name bebot-containername --memory=128M -v /path/to/befolder/conf:/bebot/Conf -v /path/to/befolder/log:/bebot/log -v /path/to/befolder/Commodities:/bebot/Commodities bebot-buildname
(you must replace "buildname" and "/path/to/befolder" accordingly to your system ; "containername" is free to choose ; all path use slashes /)
Control
Now to control if your container(s) run properly, and to control them you have a set of commands.
To show a list of running container(s) : docker ps
To enter a given container interactively : docker exec -it <full-containername>
Once inside, you command line window becomes the bot itself ; so you can see what the bot does realtime (sent & received datas, etc).
NOTE : if it's bot's 1st run & you didn't edit Conf/ files earlier, it's time to fill all infos (account/pass, char, game server, mysql credentials, etc).
If the bot is set correctly it should go online in the game and become reachable/responsive as expected.
To exit the entered container : Ctrl+p Ctrl+q
To stop a given container : docker stop <full-containername> (or Ctrl+c while entered in interactive mode upper)
Conclusion
This guide is a work in progress and will evolve as we find improvements or tricks.