In my adventure to put more homelab in docker, I moved our modded minecraft setup to docker.
So far I have found all of our mods from curse forge. modpacks make getting multiple mods working together much easier, someone else has already vetted a pack of often times 100+ mods that all play well together. I have yet to get these working in docker, I will, but for not I just have individual mods.
under the hood docker is using wget to get the mod. The link you click on from curseforge will block wget. What I do is pop open the devtools (f12 in chrome), click on the network tab, click the download link on the web page, and watch the real link show up.
I am using docker compose, it makes the command much easier to start, and all the things needed stored in a file. I am not using compose to run multiple things, just for the simple start command.
Create a directory for your server and add the following to a
version: "3.8" services: mc: container_name: walkercraft image: itzg/minecraft-server ports: - 25565:25565 environment: EULA: "TRUE" TYPE: "FORGE" VERSION: 1.16.5 MODS_FILE: /extras/mods.txt REMOVE_OLD_MODS: "true" tty: true stdin_open: true restart: unless-stopped ports: - 25565:25565 volumes: - ./minecraft-data:/data - ./mods.txt:/extras/mods.txt:ro volumes: data:
Once you have your mod file link from the network tab add them to a mods.txt file next to your docker-compose file.
Once you have made it this far starting the server is pretty simple.
docker compose up -d
If your still in the same directory, taking down the server should be pretty easy as well.
docker compose down # if that does not work you can kill it docker ps # copy the id of your container docker kill <id>