mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-11-22 02:17:26 +00:00
docker: re-run the start script on the container's first run because it won't know its hostname or IP address until then
This commit is contained in:
parent
3fdcbe542f
commit
189dd6000e
12
Dockerfile
12
Dockerfile
@ -5,10 +5,11 @@
|
|||||||
# To build the image:
|
# To build the image:
|
||||||
# sudo docker.io build -t box .
|
# sudo docker.io build -t box .
|
||||||
|
|
||||||
# To run a container for testing (with a command prompt and no publicly exposed ports):
|
# Run your container the first time with an interactive console so you can
|
||||||
# sudo docker.io run -i -t -P box
|
# create your first mail account.
|
||||||
|
# sudo docker.io run -i -t box
|
||||||
|
|
||||||
# Or to run in the background and expose all of the ports so that the *host* acts as a Mail-in-a-Box:
|
# Then run it in the background and expose all of the ports so that the *host* acts as a Mail-in-a-Box:
|
||||||
# (the SSH port is only available locally, but other ports are exposed publicly and must be available
|
# (the SSH port is only available locally, but other ports are exposed publicly and must be available
|
||||||
# otherwise the container won't start)
|
# otherwise the container won't start)
|
||||||
# sudo docker.io run -d -p 22 -p 25:25 -p 53:53/udp -p 443:443 -p 587:587 -p 993:993 box
|
# sudo docker.io run -d -p 22 -p 25:25 -p 53:53/udp -p 443:443 -p 587:587 -p 993:993 box
|
||||||
@ -18,9 +19,10 @@ MAINTAINER Joshua Tauberer (http://razor.occams.info)
|
|||||||
|
|
||||||
# We can't know these values ahead of time, so set them to something
|
# We can't know these values ahead of time, so set them to something
|
||||||
# obviously local. The start.sh script will need to be run again once
|
# obviously local. The start.sh script will need to be run again once
|
||||||
# these values are known.
|
# these values are known. We use the IP address here as a flag that
|
||||||
|
# the configuration is incomplete.
|
||||||
ENV PUBLIC_HOSTNAME box.local
|
ENV PUBLIC_HOSTNAME box.local
|
||||||
ENV PUBLIC_IP 127.0.123.123
|
ENV PUBLIC_IP 192.168.200.1
|
||||||
|
|
||||||
# Docker-specific Mail-in-a-Box configuration.
|
# Docker-specific Mail-in-a-Box configuration.
|
||||||
ENV DISABLE_FIREWALL 1
|
ENV DISABLE_FIREWALL 1
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# The PUBLIC_HOSTNAME and PUBLIC_IP is not known at the time the docker
|
||||||
|
# image is built. On the first run of the container, re-run the start
|
||||||
|
# script with actual values. That will also ask the user for their first
|
||||||
|
# email user account.
|
||||||
|
if grep "^PUBLIC_IP=192.168.200.1" /etc/mailinabox.conf > /dev/null; then
|
||||||
|
echo "Configuring container on first run..."
|
||||||
|
|
||||||
|
# Get the public IP address of the host machine.
|
||||||
|
export PUBLIC_IP=`curl -s icanhazip.com`
|
||||||
|
echo Your IP address is $PUBLIC_IP.
|
||||||
|
|
||||||
|
# Get the reverse DNS of that IP address.
|
||||||
|
export PUBLIC_HOSTNAME=`host $PUBLIC_IP | sed -e "s/.* //" | sed -e "s/\.$//"`
|
||||||
|
echo Your hostname is $PUBLIC_HOSTNAME.
|
||||||
|
|
||||||
|
# Start configuration again.
|
||||||
|
cd /usr/local/mailinabox
|
||||||
|
scripts/start.sh
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Starting Mail-in-a-Box services..."
|
echo "Starting Mail-in-a-Box services..."
|
||||||
|
|
||||||
service nsd start
|
service nsd start
|
||||||
|
@ -20,7 +20,9 @@ if grep -q "^PasswordAuthentication yes" /etc/ssh/sshd_config \
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
apt_install python3
|
# Install basic utilities.
|
||||||
|
|
||||||
|
apt_install python3 curl bind9-host
|
||||||
|
|
||||||
# Turn on basic services:
|
# Turn on basic services:
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user