Updated docker README and a docker-init tweak.

- Legacy-Id: 10500
This commit is contained in:
Henrik Levkowetz 2015-11-16 20:22:14 +00:00
parent 66411ea795
commit bfdacef1c0
2 changed files with 55 additions and 55 deletions

View file

@ -1,74 +1,77 @@
====================================================
Datatracker Development in a Docker Container (beta)
====================================================
==============================================================================
Datatracker Development in a Docker Container (beta)
==============================================================================
Intro
=====
Docker_ is a set of tools which lets you package software together with its
dependencies in lightweight containers, and run it in isolated virtual environments.
Docker_ is a toolkit which lets you package software together with its
dependencies in lightweight containers, and run it in isolated virtual
environments.
During and just after IETF-94 I've spent quite a bit of time setting up a docker
image which provides the dependencies needed to run the datatracker, and it's now
available for beta testing. Hopefully this should make it substantially easier to
get started with datatracker development.
During and just after IETF-94 I've spent quite a bit of time setting up a
docker image which provides the dependencies needed to run the datatracker,
and it's now available for beta testing. Hopefully this should make it
substantially easier to get started with datatracker development.
Steps
=====
1. Set up Docker on your preferred platform. Official installers
exist for many Linux flavours, OS X, Windows and Cloud services.
1. Set up Docker on your preferred platform. Official installers exist for
many Linux flavours, OS X, Windows and Cloud services. Here's the full `List
of Installation Instructions`_.
Docker containers require the services of an underlying Linux API,
which means that on OS X and Windows, these have to be provided
by a virtual machine which runs a minimal Linux image. The virtual
machine used is commonly VirtualBox, although at least one
unofficial VM image and controller (boot2docker_) also supports
Parallels, XenServer and VMWare.
Docker containers require the services of an underlying Linux API, which
means that on OS X and Windows, these have to be provided by a virtual
machine which runs a minimal Linux image. The virtual machine used on
non-Linux platforms is commonly VirtualBox. On Linux kernels with version
3.8 or later, no virtual machine is needed, as the docker images can be
fully supported with the native kernel services.
The primary installers available is the unofficial boot2docker_ and
the official `Docker Engine`_. I've tried both, and at this time,
November 2015, boot2docker has worked much better for me than
Docker Engine. YMMV.
Please follow the Docker installations all the way through to successfully
running the ``hello-world`` example in a terminal window ( ``$ docker run
hello-world``).
Boot2docker can self-upgrade and provides up-to-date docker server
and clients. Run update after you install::
~ $ boot2docker upgrade
2. Check out your datatracker branch as usual, in a suitable directory.
We'll assume ``~/src/dt/`` here, and assume you are ``'coder'``::
~/src/dt/ $ svn co https://svn.tools.ietf.org/svn/tools/ietfdb/personal/coder/6.8.2.dev0
3. In the checked-out working copy, you'll find a ``data/`` directory
at the top level. Fetch down a pre-built copy of the datatracker
database, place it in this directory, unpack it, and fix permissions::
3. In the checked-out working copy, you'll find a ``docker/`` directory and a
``data/`` directory at the top level. We're first going to set up a copy of
the MySQL database files under the ``data/`` directory.
~/src/dt/6.8.2.dev0/data/ $ wget https://www.ietf.org/lib/dt/sprint/ietf_utf8.bin.tar.bz2 .
There is a command in the ``docker/`` directory, ``setupdb`` which will do
this for you, or you can do it manually.
Either run::
~/src/dt/6.8.2.dev0/ $ docker/setupdb
or do this step-by-step: fetch down a pre-built copy of the datatracker
database, place it in the ``data`` directory, unpack it, and fix
permissions::
~/src/dt/6.8.2.dev0/ $ cd data
~/src/dt/6.8.2.dev0/data/ $ wget https://www.ietf.org/lib/dt/sprint/ietf_utf8.bin.tar.bz2
~/src/dt/6.8.2.dev0/data/ $ tar xjf ietf_utf8.bin.tar.bz2
~/src/dt/6.8.2.dev0/data/ $ chmod -R go+rwX mysql
4. In the checked-out working copy, you'll also find a ``docker/``
directory at the top level. It contains a Dockerfile which can
be used to build a docker image, but that doesn't concern us at
the moment. We will be using a wrapper script, ``'run'``, to
run a pre-built docker image fetched from the docker hub::
~/src/dt/6.8.2.dev0/docker/ $ ./run
4. In the ``docker/`` directory you'll also find a wrapper script named
``'run'``. We will be using the wrapper to run a pre-built docker image
fetched from the docker hub::
This will pull down the latest docker datatracker image, start it
up with appropriate settings, map the internal ``/var/lib/mysql/``
directory to the external ``data/mysql/`` directory where we placed
the database, set up a python virtualenv for you, install some
dependencies, and drop you in a bash shell where you can run the
datatracker.
~/src/dt/6.8.2.dev0/ $ docker/run
5. Make sure that all requirements are installed::
(virtual) $ cd ~/src/dt/6.8.2.dev0
(virtual) $ pip install -r requirements.txt
This will pull down the latest docker ietf/datatracker-environment image,
start it up with appropriate settings, map the internal ``/var/lib/mysql/``
directory to the external ``data/mysql/`` directory where we placed the
database, set up a python virtualenv for you, install some dependencies,
and drop you in a bash shell where you can run the datatracker.
6. You are now ready to run the tests::
@ -78,21 +81,18 @@ Steps
(virtual) $ ietf/manage.py runserver 0.0.0.0:8000
Note the IP address ``0.0.0.0`` used to make the dev server bind
to all addresses. The internal port 8000 has been mapped to port
8000 externally, too. In order to find the IP address of the
VirtualBox, run ``'$ boot2docker ip'`` or equivalent *outside* the
virtual environment::
Note the IP address ``0.0.0.0`` used to make the dev server bind to all
addresses. The internal port 8000 has been mapped to port 8000 externally,
too. In order to find the IP address of the VirtualBox, run ``'$
docker-machine ip'`` *outside* the virtual environment::
~/src/dt/6.8.2.dev0/ $ boot2docker ip
~/src/dt/6.8.2.dev0/ $ docker-machine ip
192.168.59.103
~/src/dt/6.8.2.dev0/ $ open http://192.168.59.103:8000/
.. _Docker: https://www.docker.com/
.. _`Docker Engine`: https://docs.docker.com/engine/installation/
.. _boot2docker: http://boot2docker.io/
.. _`List of Installation Instructions`: https://docs.docker.com/v1.8/installation/
.. _VirtualBox: https://www.virtualbox.org/

View file

@ -100,4 +100,4 @@ cd /home/$USER/$CWD || cd /home/$USER/
echo "Done!"
su $USER "$@"
su $USER