Use alpine for the docker image, and simplify the config + run stuff

Using env variable directly used by the process, it’s easier than calling
sed on the configuration file before we start the process.  Also we don’t
need to start as root anymore, and it’s a lot cleaner.
This commit is contained in:
louiz’
2017-04-21 11:49:23 +02:00
parent eac144acda
commit 3666f35e0e
4 changed files with 32 additions and 40 deletions
+17 -18
View File
@@ -1,26 +1,25 @@
# This Dockerfile creates a docker image running biboumi # This Dockerfile creates a docker image running biboumi
FROM docker.io/fedora:latest FROM docker.io/alpine:latest
RUN dnf --refresh install -y\ RUN apk add --no-cache\
gcc-c++\ g++\
cmake\ cmake\
make\ make\
udns-devel\ udns-dev\
sqlite-devel\ sqlite-dev\
libuuid-devel\ libuuid\
expat-devel\ util-linux-dev\
libidn-devel\ expat-dev\
systemd-devel\ libidn-dev\
git\ git\
python\ python2
&& dnf clean all
# Install botan # Install botan
RUN git clone https://github.com/randombit/botan.git && cd botan && ./configure.py --prefix=/usr && make -j8 && make install && ldconfig && rm -rf /botan RUN git clone https://github.com/randombit/botan.git && cd botan && ./configure.py --prefix=/usr && make -j8 && make install && rm -rf /botan
# Install litesql # Install litesql
RUN git clone git://git.louiz.org/litesql && mkdir /litesql/build && cd /litesql/build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make -j8 && cd /litesql/build && make install && ldconfig && rm -rf /litesql RUN git clone git://git.louiz.org/litesql && mkdir /litesql/build && cd /litesql/build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make -j8 && cd /litesql/build && make install && rm -rf /litesql
# Install biboumi # Install biboumi
RUN git clone git://git.louiz.org/biboumi && mkdir ./biboumi/build && cd ./biboumi/build &&\ RUN git clone git://git.louiz.org/biboumi && mkdir ./biboumi/build && cd ./biboumi/build &&\
@@ -29,17 +28,17 @@ RUN git clone git://git.louiz.org/biboumi && mkdir ./biboumi/build && cd ./bibou
-DWITH_BOTAN=1\ -DWITH_BOTAN=1\
-DWITH_LITESQL=1\ -DWITH_LITESQL=1\
-DWITH_LIBIDN=1\ -DWITH_LIBIDN=1\
-DWITH_SYSTEMD=1\
&& make -j8 && make install && rm -rf /biboumi && make -j8 && make install && rm -rf /biboumi
RUN useradd biboumi RUN adduser biboumi -D -h /home/biboumi
RUN mkdir /var/lib/biboumi RUN mkdir /var/lib/biboumi
RUN chown -R biboumi:biboumi /var/lib/biboumi
COPY ./biboumi.cfg /etc/biboumi/biboumi.cfg COPY ./biboumi.cfg /etc/biboumi/biboumi.cfg
RUN chown -R biboumi:biboumi /etc/biboumi RUN chown -R biboumi:biboumi /etc/biboumi
COPY ./entrypoint.sh /entrypoint.sh WORKDIR /home/biboumi
RUN chmod 755 /entrypoint.sh USER biboumi
ENTRYPOINT ["/entrypoint.sh"] CMD ["/usr/bin/biboumi", "/etc/biboumi/biboumi.cfg"]
+11 -5
View File
@@ -32,14 +32,12 @@ docker run --network=host \
Variables Variables
--------- ---------
The configuration file inside the image is a template that is completed when the container is started, using the following environment variables: The configuration file inside the image contains only a few default values. To be able to run, biboumi needs additional configuration. Additional options can be passed using environment variables. Any configuration option can be customized this way (see biboumi’s doc), but the main are listed here for convenience:
* BIBOUMI_HOSTNAME: Sets the value of the *hostname* option. * BIBOUMI_HOSTNAME: Sets the value of the *hostname* option.
* BIBOUMI_SECRET: Sets the value of the *password* option. * BIBOUMI_PASSWORD: Sets the value of the *password* option.
* BIBOUMI_ADMIN: Sets the value of the *admin* option. * BIBOUMI_ADMIN: Sets the value of the *admin* option.
* BIBOUMI_XMPP_SERVER_IP: Sets the value of the *xmpp_server_ip* option. The default is **xmpp**. * BIBOUMI_XMPP_SERVER_IP: Sets the value of the *xmpp_server_ip* option. The default value is **xmpp**.
All these variables are optional, but biboumi will probably fail to start if the hostname and secret are missing.
You can also directly provide your own configuration file by mounting it inside the container using the -v option: You can also directly provide your own configuration file by mounting it inside the container using the -v option:
@@ -49,6 +47,8 @@ docker run --link prosody:xmpp \
biboumi biboumi
``` ```
If both a custom configuration file and custom environment variables are passed to the container, the environment variables will take precedence.
Linking with the XMPP server Linking with the XMPP server
---------------------------- ----------------------------
@@ -60,3 +60,9 @@ Volumes
------- -------
The database is stored in the /var/lib/biboumi/ directory. If you don’t bind a local directory to it, the database will be lost when the container is stopped. If you want to keep your database between each run, bind it with the -v option, like this: **-v /srv/biboumi/:/var/lib/biboumi**. The database is stored in the /var/lib/biboumi/ directory. If you don’t bind a local directory to it, the database will be lost when the container is stopped. If you want to keep your database between each run, bind it with the -v option, like this: **-v /srv/biboumi/:/var/lib/biboumi**.
Note: Due to a limitation in Docker, to be able to read and write into this database, make sure this mounted directory is owned by UID and GID 1001:1001, on the host.
```
chown -R 1001:1001 database/
```
+4 -4
View File
@@ -1,6 +1,6 @@
xmpp_server_ip=BIBOUMI_XMPP_SERVER_IP xmpp_server_ip=127.0.0.1
port=5347 port=5347
db_name=/var/lib/biboumi/biboumi.sqlite db_name=/var/lib/biboumi/biboumi.sqlite
hostname=BIBOUMI_HOSTNAME hostname=xmpp
password=BIBOUMI_PASSWORD password=
admin=BIBOUMI_ADMIN admin=
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash
sed -i s/BIBOUMI_XMPP_SERVER_IP/${BIBOUMI_XMPP_SERVER_IP:-xmpp}/ /etc/biboumi/biboumi.cfg
sed -i s/BIBOUMI_HOSTNAME/${BIBOUMI_HOSTNAME:-biboumi.localhost}/ /etc/biboumi/biboumi.cfg
sed -i s/BIBOUMI_ADMIN/${BIBOUMI_ADMIN:-}/ /etc/biboumi/biboumi.cfg
sed -i s/BIBOUMI_PASSWORD/${BIBOUMI_PASSWORD:-missing_password}/ /etc/biboumi/biboumi.cfg
chown -R biboumi:biboumi /var/lib/biboumi
echo "Running biboumi with the following conf: "
cat /etc/biboumi/biboumi.cfg
exec runuser -u biboumi /usr/bin/biboumi /etc/biboumi/biboumi.cfg