Skip to content

Commit

Permalink
Added better entrypoint and database initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher Perrin committed Feb 14, 2017
1 parent d8f40ea commit f304460
Show file tree
Hide file tree
Showing 11 changed files with 182 additions and 55 deletions.
3 changes: 2 additions & 1 deletion 3.3.4/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ RUN apt-get update && \
libcurl4-openssl-dev \
libxml2-dev \
libldap2-dev \
libldb-dev && \
libldb-dev \
mysql-client && \
apt-get clean && \
rm --recursive /var/lib/apt/lists/*

Expand Down
39 changes: 29 additions & 10 deletions 3.3.4/entrypoint
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
#!/bin/bash
set -e

if [ -z "$MYSQL_PORT_3306_TCP_ADDR" ] || [ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || [ -z "$STUDIP_CONF_DB_STUDIP_USER" ]
then
echo "Error: You have to set at least the MYSQL_PORT_3306_TCP_ADDR, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]; then
export STUDIP_CONF_DB_STUDIP_HOST="$MYSQL_PORT_3306_TCP_ADDR"
fi

LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php
if [ -n "$MYSQL_ENV_MYSQL_USER" ]; then
export STUDIP_CONF_DB_STUDIP_USER="$MYSQL_ENV_MYSQL_USER"
fi

if [ -n "$MYSQL_ENV_MYSQL_PASSWORD" ]; then
export STUDIP_CONF_DB_STUDIP_PASSWORD="$MYSQL_ENV_MYSQL_PASSWORD"
fi

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]
then
sed -i "s/\$DB_STUDIP_HOST = .*/\$DB_STUDIP_HOST = \"$MYSQL_PORT_3306_TCP_ADDR\";/g" $LOCAL_CONF_FILE
if [ -n "$MYSQL_ENV_MYSQL_DATABASE" ]; then
export STUDIP_CONF_DB_STUDIP_DATABASE="$MYSQL_ENV_MYSQL_DATABASE"
fi

if ([ -z "$STUDIP_CONF_DB_STUDIP_HOST" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_USER" ]); then
echo "Error: You have to set at least the STUDIP_CONF_DB_STUDIP_HOST, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
fi

#Interpret all vars starting with $prefix as variables in $LOCAL_CONF_FILE and replace them
Expand All @@ -22,14 +34,21 @@ eval 'vars=(${!'"$prefix"'@})'
for var in ${vars[@]}; do
var_val=${!var}
var_name=${var#"$prefix"_}
if $(grep -q "$var_name" "$LOCAL_CONF_FILE")
then
if $(grep -q "$var_name" "$LOCAL_CONF_FILE"); then
sed -i "s/\$$var_name = .*/\$$var_name = \"$var_val\";/g" $LOCAL_CONF_FILE
else
echo '\$$var_name = "$var_val"' >> $LOCAL_CONF_FILE
fi
done

if [ "$1" == "initdb" ]; then
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_default_data.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_root_user.sql
exit 0
fi


# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
Expand Down
3 changes: 2 additions & 1 deletion 3.3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ RUN apt-get update && \
libcurl4-openssl-dev \
libxml2-dev \
libldap2-dev \
libldb-dev && \
libldb-dev \
mysql-client && \
apt-get clean && \
rm --recursive /var/lib/apt/lists/*

Expand Down
39 changes: 29 additions & 10 deletions 3.3/entrypoint
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
#!/bin/bash
set -e

if [ -z "$MYSQL_PORT_3306_TCP_ADDR" ] || [ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || [ -z "$STUDIP_CONF_DB_STUDIP_USER" ]
then
echo "Error: You have to set at least the MYSQL_PORT_3306_TCP_ADDR, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]; then
export STUDIP_CONF_DB_STUDIP_HOST="$MYSQL_PORT_3306_TCP_ADDR"
fi

LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php
if [ -n "$MYSQL_ENV_MYSQL_USER" ]; then
export STUDIP_CONF_DB_STUDIP_USER="$MYSQL_ENV_MYSQL_USER"
fi

if [ -n "$MYSQL_ENV_MYSQL_PASSWORD" ]; then
export STUDIP_CONF_DB_STUDIP_PASSWORD="$MYSQL_ENV_MYSQL_PASSWORD"
fi

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]
then
sed -i "s/\$DB_STUDIP_HOST = .*/\$DB_STUDIP_HOST = \"$MYSQL_PORT_3306_TCP_ADDR\";/g" $LOCAL_CONF_FILE
if [ -n "$MYSQL_ENV_MYSQL_DATABASE" ]; then
export STUDIP_CONF_DB_STUDIP_DATABASE="$MYSQL_ENV_MYSQL_DATABASE"
fi

if ([ -z "$STUDIP_CONF_DB_STUDIP_HOST" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_USER" ]); then
echo "Error: You have to set at least the STUDIP_CONF_DB_STUDIP_HOST, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
fi

#Interpret all vars starting with $prefix as variables in $LOCAL_CONF_FILE and replace them
Expand All @@ -22,14 +34,21 @@ eval 'vars=(${!'"$prefix"'@})'
for var in ${vars[@]}; do
var_val=${!var}
var_name=${var#"$prefix"_}
if $(grep -q "$var_name" "$LOCAL_CONF_FILE")
then
if $(grep -q "$var_name" "$LOCAL_CONF_FILE"); then
sed -i "s/\$$var_name = .*/\$$var_name = \"$var_val\";/g" $LOCAL_CONF_FILE
else
echo '\$$var_name = "$var_val"' >> $LOCAL_CONF_FILE
fi
done

if [ "$1" == "initdb" ]; then
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_default_data.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_root_user.sql
exit 0
fi


# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
Expand Down
3 changes: 2 additions & 1 deletion 3.4.3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ RUN apt-get update && \
libcurl4-openssl-dev \
libxml2-dev \
libldap2-dev \
libldb-dev && \
libldb-dev \
mysql-client && \
apt-get clean && \
rm --recursive /var/lib/apt/lists/*

Expand Down
39 changes: 29 additions & 10 deletions 3.4.3/entrypoint
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
#!/bin/bash
set -e

if [ -z "$MYSQL_PORT_3306_TCP_ADDR" ] || [ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || [ -z "$STUDIP_CONF_DB_STUDIP_USER" ]
then
echo "Error: You have to set at least the MYSQL_PORT_3306_TCP_ADDR, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]; then
export STUDIP_CONF_DB_STUDIP_HOST="$MYSQL_PORT_3306_TCP_ADDR"
fi

LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php
if [ -n "$MYSQL_ENV_MYSQL_USER" ]; then
export STUDIP_CONF_DB_STUDIP_USER="$MYSQL_ENV_MYSQL_USER"
fi

if [ -n "$MYSQL_ENV_MYSQL_PASSWORD" ]; then
export STUDIP_CONF_DB_STUDIP_PASSWORD="$MYSQL_ENV_MYSQL_PASSWORD"
fi

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]
then
sed -i "s/\$DB_STUDIP_HOST = .*/\$DB_STUDIP_HOST = \"$MYSQL_PORT_3306_TCP_ADDR\";/g" $LOCAL_CONF_FILE
if [ -n "$MYSQL_ENV_MYSQL_DATABASE" ]; then
export STUDIP_CONF_DB_STUDIP_DATABASE="$MYSQL_ENV_MYSQL_DATABASE"
fi

if ([ -z "$STUDIP_CONF_DB_STUDIP_HOST" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_USER" ]); then
echo "Error: You have to set at least the STUDIP_CONF_DB_STUDIP_HOST, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
fi

#Interpret all vars starting with $prefix as variables in $LOCAL_CONF_FILE and replace them
Expand All @@ -22,14 +34,21 @@ eval 'vars=(${!'"$prefix"'@})'
for var in ${vars[@]}; do
var_val=${!var}
var_name=${var#"$prefix"_}
if $(grep -q "$var_name" "$LOCAL_CONF_FILE")
then
if $(grep -q "$var_name" "$LOCAL_CONF_FILE"); then
sed -i "s/\$$var_name = .*/\$$var_name = \"$var_val\";/g" $LOCAL_CONF_FILE
else
echo '\$$var_name = "$var_val"' >> $LOCAL_CONF_FILE
fi
done

if [ "$1" == "initdb" ]; then
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_default_data.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_root_user.sql
exit 0
fi


# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
Expand Down
3 changes: 2 additions & 1 deletion 3.5/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ RUN apt-get update && \
libcurl4-openssl-dev \
libxml2-dev \
libldap2-dev \
libldb-dev && \
libldb-dev \
mysql-client && \
apt-get clean && \
rm --recursive /var/lib/apt/lists/*

Expand Down
39 changes: 29 additions & 10 deletions 3.5/entrypoint
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
#!/bin/bash
set -e

if [ -z "$MYSQL_PORT_3306_TCP_ADDR" ] || [ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || [ -z "$STUDIP_CONF_DB_STUDIP_USER" ]
then
echo "Error: You have to set at least the MYSQL_PORT_3306_TCP_ADDR, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]; then
export STUDIP_CONF_DB_STUDIP_HOST="$MYSQL_PORT_3306_TCP_ADDR"
fi

LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php
if [ -n "$MYSQL_ENV_MYSQL_USER" ]; then
export STUDIP_CONF_DB_STUDIP_USER="$MYSQL_ENV_MYSQL_USER"
fi

if [ -n "$MYSQL_ENV_MYSQL_PASSWORD" ]; then
export STUDIP_CONF_DB_STUDIP_PASSWORD="$MYSQL_ENV_MYSQL_PASSWORD"
fi

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]
then
sed -i "s/\$DB_STUDIP_HOST = .*/\$DB_STUDIP_HOST = \"$MYSQL_PORT_3306_TCP_ADDR\";/g" $LOCAL_CONF_FILE
if [ -n "$MYSQL_ENV_MYSQL_DATABASE" ]; then
export STUDIP_CONF_DB_STUDIP_DATABASE="$MYSQL_ENV_MYSQL_DATABASE"
fi

if ([ -z "$STUDIP_CONF_DB_STUDIP_HOST" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_USER" ]); then
echo "Error: You have to set at least the STUDIP_CONF_DB_STUDIP_HOST, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
fi

#Interpret all vars starting with $prefix as variables in $LOCAL_CONF_FILE and replace them
Expand All @@ -22,14 +34,21 @@ eval 'vars=(${!'"$prefix"'@})'
for var in ${vars[@]}; do
var_val=${!var}
var_name=${var#"$prefix"_}
if $(grep -q "$var_name" "$LOCAL_CONF_FILE")
then
if $(grep -q "$var_name" "$LOCAL_CONF_FILE"); then
sed -i "s/\$$var_name = .*/\$$var_name = \"$var_val\";/g" $LOCAL_CONF_FILE
else
echo '\$$var_name = "$var_val"' >> $LOCAL_CONF_FILE
fi
done

if [ "$1" == "initdb" ]; then
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_default_data.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_root_user.sql
exit 0
fi


# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
Expand Down
3 changes: 2 additions & 1 deletion Dockerfile.template
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ RUN apt-get update && \
libcurl4-openssl-dev \
libxml2-dev \
libldap2-dev \
libldb-dev && \
libldb-dev \
mysql-client && \
apt-get clean && \
rm --recursive /var/lib/apt/lists/*

Expand Down
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,29 @@
- `3.4.3` [(3.4.3/Dockerfile)](https://github.com/cperrin88/docker-studip/tree/master/3.4.3/Dockerfile)
- `3.3.4` [(3.3.4/Dockerfile)](https://github.com/cperrin88/docker-studip/tree/master/3.3.4/Docker)
- `3.3` [(3.3/Dockerfile)](https://github.com/cperrin88/docker-studip/tree/master/3.3/Docker)

# What is Stud.IP?

Stud.IP is a learning platform for education

# How to use this image

## Starting a `studip` server instance

To start a Stud.IP instance you need to run the following command to initialize the database

```
$ docker run --link some-mysql:mysql cperrin/studip initdb
```

and then start a new server

```
$ docker run --link some-mysql:mysql -p 80:80 cperrin/studip
```

This only works if the following enviroment variables are set in the linked `mysql` container:

- `MYSQL_ENV_MYSQL_USER`
- `MYSQL_ENV_MYSQL_PASSWORD`
- `MYSQL_ENV_MYSQL_DATABASE`
40 changes: 30 additions & 10 deletions entrypoint
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
#!/bin/bash
set -e

if [ -z "$MYSQL_PORT_3306_TCP_ADDR" ] || [ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || [ -z "$STUDIP_CONF_DB_STUDIP_USER" ]
then
echo "Error: You have to set at least the MYSQL_PORT_3306_TCP_ADDR, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]; then
export STUDIP_CONF_DB_STUDIP_HOST="$MYSQL_PORT_3306_TCP_ADDR"
fi

LOCAL_CONF_FILE=/usr/local/studip/config/config_local.inc.php
if [ -n "$MYSQL_ENV_MYSQL_USER" ]; then
export STUDIP_CONF_DB_STUDIP_USER="$MYSQL_ENV_MYSQL_USER"
fi

if [ -n "$MYSQL_ENV_MYSQL_PASSWORD" ]; then
export STUDIP_CONF_DB_STUDIP_PASSWORD="$MYSQL_ENV_MYSQL_PASSWORD"
fi

if [ -n "$MYSQL_PORT_3306_TCP_ADDR" ]
then
sed -i "s/\$DB_STUDIP_HOST = .*/\$DB_STUDIP_HOST = \"$MYSQL_PORT_3306_TCP_ADDR\";/g" $LOCAL_CONF_FILE
if [ -n "$MYSQL_ENV_MYSQL_DATABASE" ]; then
export STUDIP_CONF_DB_STUDIP_DATABASE="$MYSQL_ENV_MYSQL_DATABASE"
fi

if ([ -z "$STUDIP_CONF_DB_STUDIP_HOST" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_PASSWORD" ] || \
[ -z "$STUDIP_CONF_DB_STUDIP_USER" ]); then
echo "Error: You have to set at least the STUDIP_CONF_DB_STUDIP_HOST, STUDIP_CONF_DB_STUDIP_PASSWORD and STUDIP_CONF_DB_STUDIP_USER to start"
exit 1
fi

#Interpret all vars starting with $prefix as variables in $LOCAL_CONF_FILE and replace them
Expand All @@ -22,14 +34,22 @@ eval 'vars=(${!'"$prefix"'@})'
for var in ${vars[@]}; do
var_val=${!var}
var_name=${var#"$prefix"_}
if $(grep -q "$var_name" "$LOCAL_CONF_FILE")
then
if $(grep -q "$var_name" "$LOCAL_CONF_FILE"); then
sed -i "s/\$$var_name = .*/\$$var_name = \"$var_val\";/g" $LOCAL_CONF_FILE
else
echo '\$$var_name = "$var_val"' >> $LOCAL_CONF_FILE
fi
done

if [ "$1" == "initdb" ]; then
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_default_data.sql
mysql --host="$MYSQL_PORT_3306_TCP_ADDR" --user="$MYSQL_ENV_MYSQL_USER" --password="$MYSQL_ENV_MYSQL_PASSWORD" "$MYSQL_ENV_MYSQL_DATABASE" < /usr/local/studip/db/studip_root_user.sql
/usr/local/studip/cli/migrate.php
exit 0
fi


# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
Expand Down

0 comments on commit f304460

Please sign in to comment.