Skip to content

Commit 40751dd

Browse files
Populate uninitialized data directories at container startup
Previously, configuration for ssl cert/key and the MISP web application did not have volume mounts defined by default and population of the mysql database required creating an ephemeral container instance to run an initialization script once before creating the full MISP app container. With the changes in this commit, volumes would be available by default for mysql, ssl, and the MISP application. Initialization of the data for each volume is also done post container startup so that the data can be populated into mounted directories if not already present. Since this logic would be run on each container startup, the one-time creation of a container to initialize the mysql database would no longer be required.
1 parent 524de06 commit 40751dd

File tree

2 files changed

+47
-17
lines changed

2 files changed

+47
-17
lines changed

container/Dockerfile

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ ARG MISP_EMAIL=admin@localhost
1010

1111
# Dir you need to override to keep data on reboot/new container:
1212
VOLUME /var/lib/mysql
13-
#VOLUME /var/www/MISP/Config
1413

1514
# Dir you might want to override in order to have custom ssl certs
1615
# Need: "misp.key" and "misp.crt"
17-
#VOLUME /etc/ssl/private
16+
VOLUME /etc/ssl/private
1817

1918
# 80/443 - MISP web server, 3306 - mysql, 6379 - redis, 50000 - MISP ZeroMQ
2019
EXPOSE 80 443 3306 6379 50000
@@ -39,6 +38,11 @@ RUN sed -i -E 's/^(\s*)system\(\);/\1unix-stream("\/dev\/log");/' /etc/syslog-ng
3938
sudo -u www-data -H git config core.filemode false ; \
4039
echo
4140

41+
# Dir you need to override to keep app config on reboot/new container. This
42+
# appears after the git clone above to avoid a failure that would occur if
43+
# trying to clone into a non-empty directory.
44+
VOLUME /var/www/MISP/app/Config
45+
4246
WORKDIR /var/www/MISP/app/files/scripts
4347
RUN sudo -u www-data -H git clone https://github.com/CybOXProject/python-cybox.git ; \
4448
sudo -u www-data -H git clone https://github.com/STIXProject/python-stix.git
@@ -83,7 +87,6 @@ RUN mkdir /var/www/.composer && chown -R www-data:www-data /var/www/.composer ;
8387
sudo chmod -R g+ws /var/www/MISP/app/tmp ; \
8488
sudo chmod -R g+ws /var/www/MISP/app/files ; \
8589
sudo chmod -R g+ws /var/www/MISP/app/files/scripts/tmp ; \
86-
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/ssl/private/misp.key -out /etc/ssl/private/misp.crt -batch ; \
8790
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/000-default.conf ; \
8891
echo "ServerName $MISP_FQDN" >> /etc/apache2/sites-available/000-default.conf ; \
8992
echo "Redirect permanent / https://$MISP_FQDN" >> /etc/apache2/sites-available/000-default.conf ; \
@@ -110,18 +113,28 @@ RUN mkdir /var/www/.composer && chown -R www-data:www-data /var/www/.composer ;
110113
echo "ServerSignature Off" >> /etc/apache2/sites-available/default-ssl.conf ; \
111114
echo "</VirtualHost>" >> /etc/apache2/sites-available/default-ssl.conf ; \
112115
echo "ServerName localhost" >> /etc/apache2/apache2.conf ; \
113-
sudo -u www-data cp -a /var/www/MISP/app/Config/bootstrap.default.php /var/www/MISP/app/Config/bootstrap.php ; \
114-
sudo -u www-data cp -a /var/www/MISP/app/Config/database.default.php /var/www/MISP/app/Config/database.php ; \
115-
sudo -u www-data cp -a /var/www/MISP/app/Config/core.default.php /var/www/MISP/app/Config/core.php ; \
116-
sudo -u www-data cp -a /var/www/MISP/app/Config/config.default.php /var/www/MISP/app/Config/config.php
117-
118-
RUN sed -i -e 's/db login/misp/g' /var/www/MISP/app/Config/database.php ; \
119-
sed -i -e "s/db password/${MYSQL_MISP_PASSWORD}/g" /var/www/MISP/app/Config/database.php ; \
120-
sed -i -E "s/'salt'(\s+)=>\s''/'salt' => '`openssl rand -base64 32 | tr \'/\' \'0\'`'/" /var/www/MISP/app/Config/config.php ; \
121-
sed -i -E "s/'baseurl'(\s+)=>\s''/'baseurl' => 'https:\/\/${MISP_FQDN}'/" /var/www/MISP/app/Config/config.php ; \
122-
sed -i -e "s/email@address.com/${MISP_EMAIL}/" /var/www/MISP/app/Config/config.php ; \
123-
sudo chown -R www-data:www-data /var/www/MISP/app/Config ; \
124-
sudo chmod -R 750 /var/www/MISP/app/Config ; \
116+
sudo cp -aR /var/www/MISP/app/Config /.misp_config_default
117+
118+
RUN echo "#!/bin/bash" > /.misp_config_default/init-misp-config ; \
119+
echo "if [ ! -f /var/www/MISP/app/Config/.misp_config_initialized ]; then " >> /.misp_config_default/init-misp-config ; \
120+
echo "sudo -u www-data mkdir -p /var/www/MISP/app/Config" >> /.misp_config_default/init-misp-config ; \
121+
echo "sudo cp -aR /.misp_config_default/*.php /var/www/MISP/app/Config" >> /.misp_config_default/init-misp-config ; \
122+
echo "sudo chown -R www-data:www-data /var/www/MISP/app/Config" >> /.misp_config_default/init-misp-config ; \
123+
echo "sudo -u www-data cp -a /var/www/MISP/app/Config/bootstrap.default.php /var/www/MISP/app/Config/bootstrap.php" >> /.misp_config_default/init-misp-config ; \
124+
echo "sudo -u www-data cp -a /var/www/MISP/app/Config/database.default.php /var/www/MISP/app/Config/database.php" >> /.misp_config_default/init-misp-config ; \
125+
echo "sudo -u www-data cp -a /var/www/MISP/app/Config/core.default.php /var/www/MISP/app/Config/core.php" >> /.misp_config_default/init-misp-config ; \
126+
echo "sudo -u www-data cp -a /var/www/MISP/app/Config/config.default.php /var/www/MISP/app/Config/config.php" >> /.misp_config_default/init-misp-config ; \
127+
echo "sed -i -e \"s/db login/misp/g\" /var/www/MISP/app/Config/database.php" >> /.misp_config_default/init-misp-config ; \
128+
echo "sed -i -e \"s/db password/$MYSQL_MISP_PASSWORD/g\" /var/www/MISP/app/Config/database.php" >> /.misp_config_default/init-misp-config ; \
129+
echo "sed -i -E \"s/'salt'(\s+)=>\s''/'salt' => '`openssl rand -base64 32 | tr \'/\' \'0\'`'/\" /var/www/MISP/app/Config/config.php" >> /.misp_config_default/init-misp-config ; \
130+
echo "sed -i -E \"s/'baseurl'(\s+)=>\s''/'baseurl' => 'https:\/\/$MISP_FQDN'/\" /var/www/MISP/app/Config/config.php" >> /.misp_config_default/init-misp-config ; \
131+
echo "sed -i -e \"s/email@address.com/$MISP_EMAIL/\" /var/www/MISP/app/Config/config.php" >> /.misp_config_default/init-misp-config ; \
132+
echo "sudo chown -R www-data:www-data /var/www/MISP/app/Config" >> /.misp_config_default/init-misp-config ; \
133+
echo "touch /var/www/MISP/app/Config/.misp_config_initialized" >> /.misp_config_default/init-misp-config ; \
134+
echo "sudo chmod -R 750 /var/www/MISP/app/Config" >> /.misp_config_default/init-misp-config ; \
135+
echo "fi" >> /.misp_config_default/init-misp-config ; \
136+
echo "sudo rm -fR /.misp_config_default" >> /.misp_config_default/init-misp-config ; \
137+
chmod 755 /.misp_config_default/init-misp-config ; \
125138
sudo pip2 install --upgrade pip ; \
126139
sudo pip2 install pyzmq ; \
127140
sudo pip2 install redis ; \
@@ -152,7 +165,7 @@ RUN sed -i -e 's/db login/misp/g' /var/www/MISP/app/Config/database.php ; \
152165
echo "touch /var/lib/mysql/.db_initialized" >> /init-db ; \
153166
echo "chown -R mysql:mysql /var/lib/mysql" >> /init-db ; \
154167
echo "fi" >> /init-db ; \
155-
echo "rm -f /init-db" >> /init-db ; \
168+
echo "sudo rm -f /init-db" >> /init-db ; \
156169
chmod 755 /init-db ; \
157170
echo "#!/bin/bash" > /misp-bug-fix ; \
158171
echo "cd '/usr' ; /usr/bin/mysqld_safe --datadir='/var/lib/mysql' &" >> /misp-bug-fix ; \
@@ -201,4 +214,5 @@ COPY supervisord.conf /etc/supervisor/conf.d/
201214
# To change it:
202215
#echo "/var/www/MISP/app/Console/cake Password 'admin@admin.test' '@dmin1!'" >> /root/init-db ; \
203216

204-
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
217+
COPY startup.sh /
218+
CMD ["/startup.sh"]

container/startup.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
if [ -f /init-db ]; then
4+
/init-db
5+
fi
6+
7+
if [ -f /.misp_config_default/init-misp-config ]; then
8+
/.misp_config_default/init-misp-config
9+
fi
10+
11+
if [ ! -f /etc/ssl/private/.ssl_initialized ] && [ ! -f /etc/ssl/private/misp.crt ] && [ ! -f /etc/ssl/private/misp.key ]; then
12+
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/ssl/private/misp.key -out /etc/ssl/private/misp.crt -batch
13+
touch /etc/ssl/private/.ssl_initialized
14+
fi
15+
16+
/usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf"

0 commit comments

Comments
 (0)