Docker

From syn2cat - HackerSpace.lu
(Difference between revisions)
Jump to: navigation, search
(Mediawiki)
(Mediawiki)
Line 16: Line 16:
  
 
==Mediawiki==
 
==Mediawiki==
This does not use a data container, which is bad
 
  
Fist some settings
+
===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
 
* 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 :-)
 
* DBPASSWORD="$(openssl rand -base64 9)" # the password for the database (humm... save it :-)
 
* DOCKERNAME="mediawiki"
 
* DOCKERNAME="mediawiki"
  
Create a database  
+
===Create a database===
 
* # inspired from https://hub.docker.com/_/mysql/
 
* # inspired from https://hub.docker.com/_/mysql/
 
* # Create a data container with a directory /var/lib/mysql
 
* # Create a data container with a directory /var/lib/mysql
Line 30: Line 29:
 
* docker ps -a | grep wiki-mysql.* # look the nice containers we just did  
 
* docker ps -a | grep wiki-mysql.* # look the nice containers we just did  
  
Create a mediawiki
+
===Create a mediawiki===
 
<!--
 
<!--
 
* # well probably something like found here https://hub.docker.com/r/synctree/mediawiki/
 
* # well probably something like found here https://hub.docker.com/r/synctree/mediawiki/
Line 36: Line 35:
 
-->
 
-->
  
* or here https://hub.docker.com/r/nickstenning/mediawiki/ (with data container support)
+
well probably something like found here https://hub.docker.com/r/nickstenning/mediawiki/ (with data container support)
* as stated on that webpage
+
as stated on that webpage:
 
* docker run --name $DOCKERNAME --link wiki-mysql:mysql -p $WEBPORT:80 -d nickstenning/mediawiki
 
* docker run --name $DOCKERNAME --link wiki-mysql:mysql -p $WEBPORT:80 -d nickstenning/mediawiki
  
Configure mediawiki
+
===Configure mediawiki===
 
* echo "connect to http://localhost:$WEBPORT/"
 
* echo "connect to http://localhost:$WEBPORT/"
 
* click on "setup the wiki"
 
* click on "setup the wiki"
Line 50: Line 49:
 
** at end of setup you get a LocalSettings.php to download
 
** 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.
 
** this file has to be provided to the docker or put into the container. Seems to be several ways to do it.
 +
* docker stop $DOCKERNAME    # stop the container as we want to mount data...
  
Create wiki data container
+
===Create wiki data container===
 
* docker run --name ${DOCKERNAME}-data -v /data -d nickstenning/mediawiki    # to be tested
 
* docker run --name ${DOCKERNAME}-data -v /data -d nickstenning/mediawiki    # to be tested
 +
* cat LocalSettings.php | docker exec -i ${DOCKERNAME}-data sh -c 'cat > /data/LocalSettings.php'
 +
* docker exec -i ${DOCKERNAME}-data chown www-data:www-data /data/LocalSettings.php
 +
* docker exec -i ${DOCKERNAME}-data chmod 444 /data/LocalSettings.php
  
* cat LocalSettings.php | docker exec -i ${DOCKERNAME}-data sh -c 'cat > /var/www/html/LocalSettings.php'
 
* docker exec -i ${DOCKERNAME}-data chown www-data:www-data /var/www/html/LocalSettings.php
 
* docker exec -i ${DOCKERNAME}-data chmod 444 /var/www/html/LocalSettings.php
 
 
* echo "wiki is on http://localhost:$WEBPORT/index.php"
 
* echo "wiki is on http://localhost:$WEBPORT/index.php"
  

Revision as of 22:48, 8 February 2016

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 !!!!

Contents

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 usually 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

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

  • # inspired from https://hub.docker.com/_/mysql/
  • # Create a data container with a directory /var/lib/mysql
  • docker create -v /var/lib/mysql --name wiki-mysql-data mysql:latest /bin/true
  • docker run --name wiki-mysql --volumes-from wiki-mysql-data -e MYSQL_ROOT_PASSWORD=$DBPASSWORD -d mysql:latest
  • docker ps -a | grep wiki-mysql.* # look the nice containers we just did

Create a mediawiki

well probably something like found here https://hub.docker.com/r/nickstenning/mediawiki/ (with data container support) as stated on that webpage:

  • docker run --name $DOCKERNAME --link wiki-mysql:mysql -p $WEBPORT:80 -d nickstenning/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.
  • docker stop $DOCKERNAME # stop the container as we want to mount data...

Create wiki data container

  • docker run --name ${DOCKERNAME}-data -v /data -d nickstenning/mediawiki # to be tested
  • cat LocalSettings.php | docker exec -i ${DOCKERNAME}-data sh -c 'cat > /data/LocalSettings.php'
  • docker exec -i ${DOCKERNAME}-data chown www-data:www-data /data/LocalSettings.php
  • docker exec -i ${DOCKERNAME}-data chmod 444 /data/LocalSettings.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