Mit ‘Docker’ Tagged einträge

Docker CentOS6 php5.6

Montag, September 17th, 2018

Ein Dockerfile zum Bauen von PHP5.6 auf einem CentOS6 Image:

FROM centos:6
RUN yum -y groupinstall "Development Tools"
RUN yum -y --enablerepo=extras install epel-release
RUN yum install -y wget libxml2-devel libxml2 openssl-devel sqlite-devel bzip2-devel libcurl libcurl-devel libjpeg-turbo-devel openjpeg-libs openjpeg-devel libpng-devel libvpx-devel libxslt-devel net-snmp-devel readline-devel aspell-devel unixODBC-devel libicu-devel libc-client-devel freetype-devel libXpm-devel libpng-devel gmp gmp-devel libc-client libc-client-devel libmcrypt-devel libtidy libtidy-devel
RUN wget https://fossies.org/linux/misc/old/t1lib-5.1.2.tar.gz; tar -xzf t1lib-5.1.2.tar.gz; cd t1lib-5.1.2 && ./configure && make without_doc && make install
RUN git clone https://github.com/php/php-src.git
RUN cd php-src; git fetch origin PHP-5.6.38; git checkout -b php5.6 origin/PHP-5.6.38; echo 'LC_ALL="en_GB.utf8"' >> /etc/environment; export CXXFLAGS="-O3 -Os -s"; export CFLAGS="$CXXFLAGS"; ./buildconf --forcebuildconf --force && ./configure --disable-static --prefix=/opt/php-5.6 --with-config-file-path=/opt/php-5.6/etc --with-config-file-scan-dir=/opt/php-5.6/etc/conf.d --enable-bcmath=shared --enable-calendar --enable-exif=shared --enable-fpm --enable-intl=shared --enable-mbstring --enable-mysqlnd=shared --enable-ftp=shared --enable-opcache=shared --enable-pdo=shared --enable-shmop=shared --enable-soap=shared --enable-sockets=shared --enable-zip=shared --with-bz2=shared --with-curl=shared --with-freetype-dir=/usr --with-gettext=shared,/usr --with-gmp=shared --with-imap=shared --with-imap-ssl --with-jpeg-dir=/usr --with-kerberos --with-ldap-libs=/usr/lib/x86_64-linux-gnu --with-libxml-dir=/usr --with-mcrypt=shared,/usr --with-mhash=shared,/usr --with-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-openssl --with-openssl-dir=/usr --with-pdo-mysql=shared,mysqlnd --with-pdo-sqlite=shared,/usr --with-png-dir=/usr --with-sqlite3=shared,/usr --with-t1lib=/usr --with-tidy=shared --with-xpm-dir=/usr --with-xsl=shared,/usr --with-zlib --with-zlib-dir=/usr --with-libdir=lib64 && make && make install

Einführung in Docker

Freitag, August 25th, 2017

Hier eine Kurzzusammenfassung wie man mit Docker sein erstes Projekt starten kann und worauf man achten sollte.

Installation:
Die Installation ist mittlerweile trivila einfach:

apt install docker.io

Wenn man docker als System Benutzer ausführen möchte. muss dieser in der Gruppe docker sein.

usermod -aG docker user

Das Dockerfile:
Das Dockerfile beschreibt was gemacht werden soll. Fangen wir langsam an und setzen eine Instanz mit einem Webserver mit PHP Unterstützung auf:

FROM ubuntu:trusty

RUN apt-get update && apt-get install -y mariadb-client apache2 libapache2-mod-php5 php5-mysql && apt-get clean

Im Detail: Die „FROM“ Zeile beschreibt das zugrunde liegende Image. In unserem fall ist das Ubuntu in der Version 14:04. Die liste der Images findet man hier: hub.docker.com

Die Zeile RUN beschreibt was beim Prozesse des bauen eines Docker Container gemacht werden soll. An dieser stelle habe ich alle apt befehle hintereinander geschrieben, da Docker für jedes einen eigenen Layer erzeugt. Dies hat vor und Nachteile.

Dann starten wird das ganze doch mal:

Mit „docker build“ wird das Image gebaut. Mit der Option -t geben wird dem ganzen noch einen beliebigen Namen und der Punkt besagt das das Dockerfile aus dem aktuellen Verzeichnis verwendet werden soll.

docker build -t myubuntu .

Nach dem Bauen können wir den Container Starten. Zunächst habe ich mit der Option „-v“ das Verzeichnis in dem wir uns gerade befinden im den Container an die Stelle /var/www/html gemountet. Mit der Option -i und -t mit dem bekommen wir im zusammen Spiel mit dem abschließenden Aufruf von /bin/bash einen Interaktiven zugriff auf den Container. Die „–rm“ Option löscht nach beenden der Interaktiven Shell auch den gesamten Container. Dies würde Docker sonst nicht machen und es würde sehr viel Datenmüll entstehen. Da wir dem ganzen einen Namen gegeben haben müssen wir nicht umständlich nach nach der beim Bauen des Container erzeugten ID suchen sondern könne einfach loslegen:

docker run -v `pwd`:/var/www/html -i -t --rm myubuntu /bin/bash

In diesem Container ist nun noch nichts gestartet. Nach dem Starten des Webservers mittels /etc/init.d/apache2 start kann mit einem Webbrowser die Seite angezeigt werden. Hierfür sucht man sich die Aktuelle IP herraus: ip a und gibt diese im Webbrowser an.