Docker

From syn2cat - HackerSpace.lu
Revision as of 21:03, 7 February 2016 by Gunstick (Talk | contribs)

Jump to: navigation, search

My little page about getting docker to run, done by somebody having no idea what docker is.

Yeah, DAU-docker!

ATTENTION this uses default passwords, and is completely unsecure !!!!

First install docker

  • sudo apt-get install docker.io
  • sudo usermod -a -G docker $(id -un)
  • # logoout/login to get your group attribution

==Learn something about the docker philosophy You never log in to the container but specify all settings in the Dockerfile. Recreating the container should give you a ready to run application.

Most installs don't care really what happens to your data, but docker has a feature for this. Put the data into a separate container than the application. Then make the data container mount points visible in your application container. This way you can replace the application (update) without needing a backup/restore step.

Mediawiki

This does not use a data container, which is bad

Fist some settings

  • WEBPORT=8080 # on which port the webserver should listen on the main host, if you have already a webserver, 80 won't work
  • DBPASSWORD="$(openssl rand -base64 9)" # the password for the database (humm... save it :-)
  • DOCKERNAME="mediawiki"

Create a database

Create a mediawiki

Configure mediawiki

  • echo "connect to http://localhost:$WEBPORT/"
  • click on "setup the wiki"
    • database host: mysql
    • database name: mysql
    • table prefix: mw #change this if you install more than one mediawiki into this database
    • username: root
    • echo password: $DBPASSWORD
    • at end of setup you get a LocalSettings.php to download
    • this file has to be provided to the docker or put into the container. Seems to be several ways to do it, but none work. So this one works:
  • cat LocalSettings.php | docker exec -i $DOCKERNAME sh -c 'cat > /var/www/html/LocalSettings.php'
  • docker exec -i $DOCKERNAME chown www-data:www-data /var/www/html/LocalSettings.php
  • docker exec -i $DOCKERNAME chmod 444 /var/www/html/LocalSettings.php
  • echo "wiki is on http://localhost:$WEBPORT/index.php"

More help: well the usual mediawiki help

Engelsystem

This does not use a data container, but as it's often only for a short event, I don't care.

Give some configuration stuff

  • ENGELPORT=80 # on which port the engel system should listen on the main host, if you have a webserver, 80 won't work
  • ENGELDB=3306 # on which port the mysql of the engelsystem should be visible on the main host
  • DBPASSWORD="$(openssl rand -base64 9)" # the password for the database (humm... save it it :-)
  • ENGELPASSWORD="$(openssl rand -base64 9)" # the password for the engelsystem (humm... save it it :-)
  • DOCKERNAME="engelsystem"
  • ENGELADMIN="engeladmin" # well just use it

from https://github.com/ruep/dockerfile-engel

  • git clone https://github.com/ruep/dockerfile-engel.git
  • cd dockerfile-engel/
  • docker build -t engelweb-app . # this takes a long time
  • docker run --name "$DOCKERNAME" -d -p ${ENGELPORT}:80 -p ${ENGELDB}:3306 -e MYSQL_PASS="$DBPASSWORD" engelweb-app
  • docker exec -t "$DOCKERNAME" sed -i 's/-pengel/-p'$DBPASSWORD'/' /engelweb/db/createdb.sh # needed coz db pass hardcoded
  • docker exec -t "$DOCKERNAME" /engelweb/db/createdb.sh engelsystem engeladmin "$ENGELPASSWORD"
  • docker exec -t "$DOCKERNAME" sh -c "/usr/bin/mysql -uadmin -p$DBPASSWORD engelsystem < /engelweb/db/install.sql"
  • docker exec -t "$DOCKERNAME" sh -c "/usr/bin/mysql -uadmin -p$DBPASSWORD engelsystem < /engelweb/db/update.sql"
  • echo "Please remember the database password: $DBPASSWORD"
  • echo "Please remember the engelsystem login: ${ENGELADMIN} ${ENGELPASSWORD}"
  • echo login to http://localhost:$ENGELPORT/ with user 'admin' and password 'asdfasdf'
Personal tools
Namespaces

Variants
Actions
Navigation
syn2cat
Hackerspace
Activities
Initiatives
Community
Tools
Tools