Community discussions

MikroTik App
 
gfunkdave
Frequent Visitor
Frequent Visitor
Topic Author
Posts: 96
Joined: Tue Jan 09, 2018 12:05 am

Trouble scripting container updates

Wed Jun 28, 2023 7:04 pm

I'm just trying to script deleting and re-adding a Pihole container, and it keeps failing on the /container/add, but I don't know why. Can someone help? This is my first script so I am sure it's something stupid.
/container/stop [find tag=pihole/pihole:latest]
:log info "Stopped";
:delay 30s;
:log info "removing...";
/container/remove [find tag=pihole/pihole:latest]
:log info "adding...";
/container/add remote-image=pihole/pihole:latest dns=192.168.4.1 domain-name=elbonia envlist=pihole_envs hostname=pihole interface=veth1 mounts=etc_pihole,dnsmasq_Pi-hole root-dir=/usb1/docker/pihole-root start-on-boot=yes
:log info "added";
:delay 90s;
:log info "starting";
/container/start [find tag=pihole/pihole:latest]
The error I get in the log is:
Image

But if I copy that exact /container/add line into the terminal, the container adds just fine. What's going on here? I have given the script read and write permissions. Does it need something else?

Thanks
 
User avatar
Amm0
Forum Guru
Forum Guru
Posts: 4696
Joined: Sun May 01, 2016 7:12 pm
Location: California
Contact:

Re: Trouble scripting container updates

Wed Jun 28, 2023 7:33 pm

It may be the starting slash in "root-dir" – I recall it doesn't take one... so maybe try removing the starting / from the path:
root-dir=usb1/docker/pihole-root

Also, it may not be stopped even after 30 seconds is other possibility here... logs might show if that's the case. To avoid :delay X, you can use a loop to read the status in some loop, if you want to be sure it stopped, etc. before proceeding (e.g. rather than using :delay X). I have a unforentently complex example of how to do this here:
https://github.com/tikoci/serial2http/b ... L2HTTP.rsc
 
User avatar
Amm0
Forum Guru
Forum Guru
Posts: 4696
Joined: Sun May 01, 2016 7:12 pm
Location: California
Contact:

Re: Trouble scripting container updates

Wed Jun 28, 2023 7:37 pm

Also OCI images were broken in some V7 releases ... so you may want to be sure you're using 7.10 or greater.
 
gfunkdave
Frequent Visitor
Frequent Visitor
Topic Author
Posts: 96
Joined: Tue Jan 09, 2018 12:05 am

Re: Trouble scripting container updates

Wed Jun 28, 2023 7:50 pm

It appears to be a permissions thing. If I enable all the script permissions it works fine. I'm not sure which one (and don't feel like trying them one by one).

Of course now I've modified the script to not need the delays and once again it doesn't work (same error).
:global mytag "pihole"
/container {
	stop [find tag~$mytag]
	:do { :delay 1s } while=([get [find tag~$mytag] status ] != "stopped")
	remove [find tag~$mytag]
	add remote-image=pihole/pihole:latest dns=192.168.4.1 domain-name=elbonia envlist=pihole_envs hostname=pihole interface=veth1 mounts=etc_pihole,dnsmasq_Pi-hole root-dir=/usb1/docker/pihole-root start-on-boot=yes
	:do { :delay 1s } while=([get [find tag~$mytag] status ] != "stopped")
	start [find tag~$mytag]
}
 
gfunkdave
Frequent Visitor
Frequent Visitor
Topic Author
Posts: 96
Joined: Tue Jan 09, 2018 12:05 am

Re: Trouble scripting container updates  [SOLVED]

Wed Jun 28, 2023 8:37 pm

Aha! It was trying to add the container before it was done removing it. This script works:
:global mytag "pihole"
/container {
	stop [find tag~$mytag]
	:do { :delay 1s } while=([get [find tag~$mytag] status ] != "stopped")
	remove [find tag~$mytag]
	:do { :delay 1s } while=([print count-only] = 1)
	add remote-image=pihole/pihole:latest dns=192.168.4.1 domain-name=elbonia envlist=pihole_envs hostname=pihole interface=veth1 mounts=etc_pihole,dnsmasq_Pi-hole root-dir=/usb1/docker/pihole-root start-on-boot=yes
	:do { :delay 1s } while=([get [find tag~$mytag] status ] != "stopped")
	start [find tag~$mytag]
}