mirror of
https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update.git
synced 2026-06-24 12:11:33 +00:00
feat: add Docker setup for RouterOS and Mailpit services
This commit is contained in:
parent
d3eb3b59be
commit
014429f721
4 changed files with 154 additions and 0 deletions
62
lab/Makefile
Normal file
62
lab/Makefile
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
-include .docker-compose.env
|
||||||
|
|
||||||
|
#export COMPOSE_FILE=docker-compose-dev.yml
|
||||||
|
# export COMPOSE_PROJECT_NAME=dev
|
||||||
|
export DOCKER_BUILDKIT?=1
|
||||||
|
export COMPOSE_CONVERT_WINDOWS_PATHS?=1
|
||||||
|
export TZ?=UTC
|
||||||
|
export BUILD_DATE?=$(shell TZ=":UTC" date '+%Y-%m-%d %H:%M:%S (%Z)')
|
||||||
|
.EXPORT_ALL_VARIABLES:
|
||||||
|
.PHONY: *
|
||||||
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
|
THIS_FILE := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
|
CURRENT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||||
|
|
||||||
|
DOCKER_COMPOSE_COMMAND := $(shell \
|
||||||
|
if docker compose version >/dev/null 2>&1; then echo "docker compose"; \
|
||||||
|
elif docker-compose version >/dev/null 2>&1; then echo "docker-compose"; \
|
||||||
|
else echo ""; fi)
|
||||||
|
|
||||||
|
ifeq ($(DOCKER_COMPOSE_COMMAND),)
|
||||||
|
$(error "docker compose is required")
|
||||||
|
endif
|
||||||
|
|
||||||
|
help: ## Show this help
|
||||||
|
@echo "Make Application Docker Images and Containers using Docker-Compose files in 'docker' Dir."
|
||||||
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m (default: help)\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-12s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
|
||||||
|
|
||||||
|
up: ## Docker compose up
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) up --build --no-deps --detach --remove-orphans
|
||||||
|
|
||||||
|
start: ## Alias for up
|
||||||
|
$(MAKE) up
|
||||||
|
|
||||||
|
down: ## Docker compose down
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) down --remove-orphans
|
||||||
|
|
||||||
|
stop: ## Docker compose stop
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) stop
|
||||||
|
|
||||||
|
restart: ## Restart containers
|
||||||
|
$(MAKE) down
|
||||||
|
$(MAKE) up
|
||||||
|
$(info Restart completed)
|
||||||
|
|
||||||
|
update: ## Update containers
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) pull
|
||||||
|
$(MAKE) up
|
||||||
|
|
||||||
|
destroy: ## Destroy containers/volumes (keep sources app folders)
|
||||||
|
$(MAKE) stop
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) down --rmi all --remove-orphans
|
||||||
|
|
||||||
|
rebuild: ## Rebuild docker container (destroy & upgrade)
|
||||||
|
$(MAKE) destroy
|
||||||
|
$(MAKE) up
|
||||||
|
|
||||||
|
state: ## Show current state
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) ps
|
||||||
|
|
||||||
|
logs: ## Show docker logs
|
||||||
|
$(DOCKER_COMPOSE_COMMAND) logs -f --tail=100 $(ARGS)
|
||||||
60
lab/compose.yaml
Normal file
60
lab/compose.yaml
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
services:
|
||||||
|
|
||||||
|
mailpit:
|
||||||
|
container_name: '${COMPOSE_PROJECT_NAME}-mailpit'
|
||||||
|
image: axllent/mailpit:latest
|
||||||
|
tty: true
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- 'TZ=${TZ:-UTC}'
|
||||||
|
- 'MP_SMTP_AUTH_ACCEPT_ANY=1'
|
||||||
|
- 'MP_SMTP_AUTH_ALLOW_INSECURE=1'
|
||||||
|
- 'MP_ALLOW_UNTRUSTED_TLS=1'
|
||||||
|
ports:
|
||||||
|
- '8025:8025' # Web UI
|
||||||
|
networks:
|
||||||
|
- network1
|
||||||
|
|
||||||
|
routeros:
|
||||||
|
# https://github.com/EvilFreelancer/docker-routeros
|
||||||
|
# https://hub.docker.com/r/evilfreelancer/docker-routeros/
|
||||||
|
container_name: '${COMPOSE_PROJECT_NAME}-routeros'
|
||||||
|
image: evilfreelancer/docker-routeros:7.21.4
|
||||||
|
restart: unless-stopped
|
||||||
|
tty: true
|
||||||
|
depends_on:
|
||||||
|
mailpit:
|
||||||
|
condition: service_healthy
|
||||||
|
#entrypoint: ["/routeros/entrypoint_with_four_interfaces.sh"]
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
devices:
|
||||||
|
- /dev/net/tun
|
||||||
|
- /dev/kvm
|
||||||
|
ports:
|
||||||
|
- "12280:80"
|
||||||
|
- "12222:22"
|
||||||
|
- "12223:23"
|
||||||
|
- "18728:8728"
|
||||||
|
- "18729:8729"
|
||||||
|
- "18291:8291"
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
interface_name: eth0
|
||||||
|
network1:
|
||||||
|
interface_name: eth1
|
||||||
|
|
||||||
|
routeros-init:
|
||||||
|
build:
|
||||||
|
context: ./docker/routeros-init
|
||||||
|
restart: "no"
|
||||||
|
depends_on:
|
||||||
|
routeros:
|
||||||
|
condition: service_started
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
|
||||||
|
|
||||||
|
networks:
|
||||||
|
network1:
|
||||||
|
driver: bridge
|
||||||
9
lab/docker/routeros-init/Dockerfile
Normal file
9
lab/docker/routeros-init/Dockerfile
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
FROM alpine:3.23
|
||||||
|
|
||||||
|
RUN apk add --no-cache openssh-client
|
||||||
|
|
||||||
|
COPY routeros-init.sh /usr/local/bin/routeros-init
|
||||||
|
|
||||||
|
RUN chmod +x /usr/local/bin/routeros-init
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/routeros-init"]
|
||||||
23
lab/docker/routeros-init/routeros-init.sh
Normal file
23
lab/docker/routeros-init/routeros-init.sh
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
deadline="$(($(date +%s) + 120))"
|
||||||
|
|
||||||
|
while [ "$(date +%s)" -lt "$deadline" ]; do
|
||||||
|
if ssh \
|
||||||
|
-o StrictHostKeyChecking=no \
|
||||||
|
-o UserKnownHostsFile=/dev/null \
|
||||||
|
-o ConnectTimeout=5 \
|
||||||
|
-o PreferredAuthentications=none \
|
||||||
|
-o LogLevel=ERROR \
|
||||||
|
admin@routeros \
|
||||||
|
"/tool e-mail set server=mailpit port=1025 from=routeros@example.test tls=no"; then
|
||||||
|
echo "RouterOS e-mail settings applied."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Timed out waiting for RouterOS SSH." >&2
|
||||||
|
exit 1
|
||||||
Loading…
Add table
Add a link
Reference in a new issue