Reorganize some files and import some others

This commit is contained in:
2015-01-14 15:14:22 +00:00
parent c03924f6a6
commit ecb0bb0815
29 changed files with 151 additions and 158 deletions

1
.gitignore vendored
View File

@@ -5,3 +5,4 @@
maestro.yaml maestro.yaml
setup setup
README.md README.md
/build/Dockerfile

View File

@@ -1 +1 @@
make -f $DOCKER_HOME/images/$1/Makefile build make -f $DOCKER_HOME/images/$1.mk build

View File

@@ -1,11 +1,11 @@
RANDOM = $(shell bash -c 'echo $$RANDOM')
HOME = $(DOCKER_HOME) HOME = $(DOCKER_HOME)
BASE = $(HOME)/build BASE = $(HOME)/build
DIR = $(HOME)/images/$(NAME) FILE = $(BASE)/Dockerfile
FILE = $(DIR)/Dockerfile
FROM = ubuntu:trusty FROM = ubuntu:trusty
PORT = 8001 PORT = 8001
MODE = minimal MODE = minimal
ARGS = --no-cache --rm=true ARGS = --rm=true #--no-cache
include $(wildcard $(HOME)/build/make/*.mk) include $(wildcard $(HOME)/build/make/*.mk)
@@ -17,27 +17,35 @@ define execute
$(call download,-O -,$(1),| bash) $(call download,-O -,$(1),| bash)
endef endef
define script
$(call execute,scripts/$(1).sh)
endef
define boot define boot
$(call download,-O /opt/init.d/$(1)_$(2),boot/$(2).sh) $(call download,-O /opt/init.d/$(1)_$(2),boot/$(2).sh)
@echo 'RUN chmod +x /opt/init.d/$(1)_$(2)' >> ${FILE}
endef endef
define runit define runit
@echo 'RUN mkdir -p /etc/service/$(1)' >> ${FILE} @echo 'RUN mkdir -p /etc/service/$(1)' >> ${FILE}
$(call download,-O /etc/service/$(1)/run,runit/$(1)) $(call download,-O /etc/service/$(1)/run,runit/$(1))
@echo 'RUN chmod +x /etc/service/$(1)/run' >> ${FILE}
endef
define script
$(call execute,scripts/$(1).sh)
endef
define script_force
$(call execute,scripts/$(1).sh?random=$(RANDOM))
endef endef
all: build bin service clean all: build bin service clean
build: prepare build: prepare
$(call script,cleanup) $(call script,cleanup)
@echo 'RUN chmod +x /opt/init.d/*' >> ${FILE}
@echo 'CMD ["/opt/init"]' >> ${FILE} @echo 'CMD ["/opt/init"]' >> ${FILE}
@$(shell cd ${BASE} && python -m SimpleHTTPServer $(PORT) > /dev/null &) @$(shell cd ${BASE} && python -m SimpleHTTPServer $(PORT) > /dev/null &)
@docker build -t $(NAME):$(VERSION) $(ARGS) ${DIR} @sleep 2
@kill -9 $(lsof -i tcp:8001 -t) @docker build -t $(NAME):$(VERSION) $(ARGS) ${BASE}
@kill -9 $(lsof -i tcp:$(PORT) -t)
prepare: prepare:
@echo FROM $(FROM) > ${FILE} @echo FROM $(FROM) > ${FILE}
@@ -46,8 +54,9 @@ prepare:
@echo ENV HOST_ADDR $(HOST_ADDR) >> ${FILE} @echo ENV HOST_ADDR $(HOST_ADDR) >> ${FILE}
@echo ENV HOST_PORT $(PORT) >> ${FILE} @echo ENV HOST_PORT $(PORT) >> ${FILE}
@echo 'RUN apt-get install -y wget' >> ${FILE} @echo 'RUN apt-get install -y wget' >> ${FILE}
$(call download,-P /build,config,) $(call download,-P /build,config)
$(call download,-P /build,init) $(call download,-P /opt,init)
@echo 'RUN chmod +x /opt/init' >> ${FILE}
$(call script,prepare) $(call script,prepare)
service: service:

View File

@@ -12,3 +12,8 @@ apt_get_install_temporary() {
echo $@ >> /build/temporary echo $@ >> /build/temporary
$apt_get_install "$@" $apt_get_install "$@"
} }
export_env() {
export $1="$2"
echo -n $2 > /etc/container_environment/$1
}

View File

@@ -0,0 +1,2 @@
lighttpd-php: php lighttpd
$(call script_force,$@)

3
build/make/lighttpd.mk Normal file
View File

@@ -0,0 +1,3 @@
lighttpd:
$(call script_force,$@)
$(call runit,$@)

3
build/make/mysql.mk Normal file
View File

@@ -0,0 +1,3 @@
mysql:
$(call script_force,$@)
$(call runit,$@)

2
build/make/php.mk Normal file
View File

@@ -0,0 +1,2 @@
php:
$(call script_force,$@)

7
build/runit/lighttpd Normal file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
mkdir -p `dirname $LIGHTTPD_LOG` $LIGHTTPD_DOMAINS
chown www-data:www-data `dirname $LIGHTTPD_LOG`
if [[ ! -e $LIGHTTPD_DOMAINS ]]; then
touch $LIGHTTPD_DOMAINS/empty.conf
fi
/usr/sbin/lighttpd -D -f $LIGHTTPD_CONFIG

View File

@@ -13,6 +13,6 @@ if [[ -n "$MYSQL_SETUP" ]]; then
until [[ -n $(netstat -an | grep 3306) ]]; do until [[ -n $(netstat -an | grep 3306) ]]; do
sleep 1 sleep 1
done done
mysqladmin -u root password kreeft mysqladmin -u root password dummy
fg fg
fi fi

View File

@@ -1,5 +1,4 @@
#!/bin/sh #!/bin/sh
echo "$HOST_ADDR host" >> /tmp/hosts
mkdir -p `dirname $REDIS_LOG` $REDIS_DATA mkdir -p `dirname $REDIS_LOG` $REDIS_DATA
sysctl vm.overcommit_memory=1 sysctl vm.overcommit_memory=1
/usr/bin/redis-server $REDIS_CONFIG /usr/bin/redis-server $REDIS_CONFIG

View File

@@ -5,7 +5,7 @@ set -x
## Remove temporary packages for minimal builds ## Remove temporary packages for minimal builds
if [ $MODE == "minimal" ]; then if [ $MODE == "minimal" ]; then
cat /build/temporary | xargs apt-get -y autoremove cat /build/temporary | xargs apt-get -y --purge autoremove
fi fi
## Clean apt files ## Clean apt files

View File

@@ -9,5 +9,11 @@ mkdir -p $LD_LIBRARY_PATH
cp /lib/x86_64-linux-gnu/libnss_files.so.2 $LD_LIBRARY_PATH cp /lib/x86_64-linux-gnu/libnss_files.so.2 $LD_LIBRARY_PATH
sed -i 's,/etc/hosts,/tmp/hosts,' $LD_LIBRARY_PATH/libnss_files.so.2 sed -i 's,/etc/hosts,/tmp/hosts,' $LD_LIBRARY_PATH/libnss_files.so.2
## Other commands
# ENV LD_LIBRARY_PATH /root/lib
# RUN mkdir $LD_LIBRARY_PATH
# RUN cp /lib/x86_64-linux-gnu/libnss_files.so.2 $LD_LIBRARY_PATH
# RUN perl -pi -e 's:/etc/hosts:/tmp/hosts:g' $LD_LIBRARY_PATH/libnss_files.so.2
## Environment variable ## Environment variable
echo -n $LD_LIBRARY_PATH > /etc/container_environment/LD_LIBRARY_PATH echo -n $LD_LIBRARY_PATH > /etc/container_environment/LD_LIBRARY_PATH

View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e
source /build/config
set -x
## Enable configuration PHP in Lighttpd
ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf
ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

18
build/scripts/lighttpd.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
set -e
source /build/config
set -x
## Lighthttpd
apt_get_install_permanent lighttpd
## Environment
export_env LIGHTTPD_CONFIG /etc/lighttpd/lighttpd.conf
export_env LIGHTTPD_DOMAINS /host/etc/lighttpd
export_env LIGHTTPD_LOG /host/var/log/lighttpd/error.log
export_env LIGHTTPD_DATA /host/var/www/global
## Configuration
sed -i "s,^\(server.errorlog\s*=\s*\).*$,\1\"$LIGHTTPD_LOG\"," $LIGHTTPD_CONFIG
sed -i "s,^\(server.document-root\s*=\s*\).*$,\1\"$LIGHTTPD_DATA\"," $LIGHTTPD_CONFIG
echo "include_shell \"cat $LIGHTTPD_DOMAINS/*.conf\"" >> $LIGHTTPD_CONFIG

19
build/scripts/mysql.sh Normal file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
set -e
source /build/config
set -x
## MySQL
debconf-set-selections <<< 'mysql-server mysql-server/root_password password dummy'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password dummy'
apt_get_install_permanent mysql-server
## Environment
export_env MYSQL_CONFIG /etc/mysql/my.cnf
export_env MYSQL_LOG /host/var/log/mysql/error.log
export_env MYSQL_DATA /host/var/lib/mysql
## Configuration
sed -i "s,^\(log_error\s*=\s*\).*$,\1$MYSQL_LOG," $MYSQL_CONFIG
sed -i "s,^\(datadir\s*=\s*\).*$,\1$MYSQL_DATA," $MYSQL_CONFIG
sed -i "s,^\(bind-address\s*=\s*\).*$,\10.0.0.0," $MYSQL_CONFIG

27
build/scripts/php.sh Normal file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
set -e
source /build/config
set -x
## Environment
export_env PHP_VERSION 5.6.4
export_env PHP_CONFIG /usr/local/lib/php.ini
export_env PHP_TIMEZONE Europe/Amsterdam
## PHP
apt_get_install_temporary gcc make
cd /opt
#wget http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_3.2.54-2_amd64.deb
#dpkg -i linux-libc-dev_3.2.54-2_amd64.deb
apt_get_install_permanent libxml2-dev libcurl4-openssl-dev libbz2-dev libjpeg-dev libpng12-dev libmcrypt-dev
wget http://uk1.php.net/get/php-$PHP_VERSION.tar.gz/from/this/mirror -O php-$PHP_VERSION.tar.gz && \
tar xzf php-$PHP_VERSION.tar.gz && \
cd php-$PHP_VERSION
./configure --enable-calendar --enable-bcmath --with-bz2 --enable-ctype --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --enable-sockets --with-zlib --enable-soap --enable-zip --with-mhash --with-curl --with-gd --with-mysql --with-jpeg-dir --with-openssl --with-mysqli --with-mcrypt
make
make install
## Configuration
cp /opt/php-$PHP_VERSION/php.ini-production $PHP_CONFIG
sed -i "s,^;\(date\.timezone\s*=\s*\)$,\1 $PHP_TIMEZONE," $PHP_CONFIG
ln -s /usr/local/bin/php-cgi /usr/bin/php-cgi

View File

@@ -30,11 +30,15 @@ ln -sf /bin/true /sbin/initctl
dpkg-divert --local --rename --add /usr/bin/ischroot dpkg-divert --local --rename --add /usr/bin/ischroot
ln -sf /bin/true /usr/bin/ischroot ln -sf /bin/true /usr/bin/ischroot
## Fix known issue with user accounts
## https://github.com/docker/docker/issues/6345#issuecomment-49245365
ln -sf /bin/true /usr/bin/chfn
## Install HTTPS support for APT ## Install HTTPS support for APT
apt_get_install_permanent apt-transport-https apt_get_install_permanent apt-transport-https
## Upgrade all packages ## Upgrade all packages
#apt-get dist-upgrade -y --no-install-recommends apt-get dist-upgrade -y --no-install-recommends
## Fix locale ## Fix locale
apt_get_install_permanent language-pack-en apt_get_install_permanent language-pack-en

View File

@@ -4,7 +4,8 @@ source /build/config
set -x set -x
## Often used tools ## Often used tools
apt_get_install_temporary curl python-pip git inetutils-ping telnet apt_get_install_permanent curl python-pip git
apt_get_install_temporary inetutils-ping telnet
## Often used python modules ## Often used python modules
pip install argparse pip install argparse

View File

@@ -1,25 +0,0 @@
FROM ubuntu:trusty
ENV MODE minimal
ENV HOST_ADDR 10.0.2.15
ENV HOST_PORT 8001
RUN apt-get install -y wget
RUN wget -q -P /build $HOST_ADDR:$HOST_PORT/config
RUN wget -q -P /build $HOST_ADDR:$HOST_PORT/init
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/prepare.sh | bash
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/cron.sh | bash
RUN mkdir -p /etc/service/cron
RUN wget -q -O /etc/service/cron/run $HOST_ADDR:$HOST_PORT/runit/cron
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/syslog.sh | bash
RUN mkdir -p /etc/service/syslog
RUN wget -q -O /etc/service/syslog/run $HOST_ADDR:$HOST_PORT/runit/syslog
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/sshd.sh | bash
RUN mkdir -p /etc/service/sshd
RUN wget -q -O /etc/service/sshd/run $HOST_ADDR:$HOST_PORT/runit/sshd
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/hosts.sh | bash
RUN wget -q -O /opt/init.d/01_hosts $HOST_ADDR:$HOST_PORT/boot/hosts.sh
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/init.sh | bash
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/runit.sh | bash
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/logrotate.sh | bash
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/utilities.sh | bash
RUN wget -q -O - $HOST_ADDR:$HOST_PORT/scripts/cleanup.sh | bash
CMD ["/opt/init"]

View File

@@ -1,19 +0,0 @@
ARGS="-v /root/.config/pulse:/root/.config/pulse"
DIR=`dirname $0`
DIR=`readlink -e $DIR`
BASE=`basename $DIR`
IFS='/' read -ra ADDR <<< "$DIR"
CONTAINER=${ADDR[-2]}
while : ; do
ID=`docker ps --no-trunc | grep $CONTAINER: | cut -d' ' -f1`
if [ -n "$ID" ]; then
break
fi
if [ ! -n "$STARTED" ]; then
echo "Starting container."
/opt/docker/bin/run $CONTAINER &
STARTED=yes
sleep 10
fi
done
/opt/docker/bin/ssh $CONTAINER $1 "source .profile; /opt/$CONTAINER"

View File

@@ -1,7 +0,0 @@
ARGS=""
DIR=`dirname $0`
DIR=`readlink -e $DIR`
BASE=`basename $DIR`
IFS='/' read -ra ADDR <<< "$DIR"
CONTAINER=${ADDR[-2]}
/opt/docker/bin/run -t $CONTAINER "$ARGS" $1 "$2"

View File

@@ -1,24 +0,0 @@
ARGS=""
DIR=`dirname $0`
DIR=`readlink -e $DIR`
BASE=`basename $DIR`
IFS='/' read -ra ADDR <<< "$DIR"
CONTAINER=${ADDR[-2]}
ID=`docker ps --no-trunc | grep $CONTAINER: | cut -d' ' -f1`
if [ -n "$ID" ]; then
IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ID`
COMMAND="ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i id_rsa $ARGS root@$IP"
if [ ! -e id_rsa ]; then
docker cp $ID:/opt/id_rsa .
fi
if [ ! -z "$1" ] && [ "$1" == "-l" ]; then
DISPLAY=:0
chmod 0666 id_rsa
su user -c "$COMMAND \"$2\""
else
chmod 0600 id_rsa
eval "$COMMAND \"$1\""
fi
else
echo "Container is not running."
fi

View File

@@ -1,41 +0,0 @@
FROM ubuntu:precise
RUN apt-get update
RUN apt-get install -y wget gcc make
RUN wget http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_3.2.54-2_amd64.deb
RUN dpkg -i linux-libc-dev_3.2.54-2_amd64.deb
RUN apt-get install -y libxml2-dev libcurl4-openssl-dev libbz2-dev libjpeg-dev libpng12-dev libmcrypt-dev
ENV PHP_VERSION 5.5.9
RUN cd /opt && \
wget http://uk1.php.net/get/php-$PHP_VERSION.tar.gz/from/this/mirror -O php-$PHP_VERSION.tar.gz && \
tar xzf php-$PHP_VERSION.tar.gz && \
cd php-$PHP_VERSION && \
./configure --enable-calendar --enable-bcmath --with-bz2 --enable-ctype --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --enable-sockets --with-zlib --enable-soap --enable-zip --with-mhash --with-curl --with-gd --with-mysql --with-jpeg-dir --with-openssl --with-mysqli --with-mcrypt && \
make && \
make install
#RUN chmod +x /opt/redis-$PHP_VERSION/src/redis-server
#ENV REDIS_CONFIG /etc/redis/redis-server.conf
#ENV REDIS_LOG /host/var/log/redis/redis-server.log
#ENV REDIS_DATA /host/var/lib/redis
#RUN mkdir -p `dirname $REDIS_CONFIG`
#RUN cp /opt/redis-$PHP_VERSION/redis.conf $REDIS_CONFIG
#RUN sed -i "s,^\(logfile\s*\).*$,\1$REDIS_LOG," $REDIS_CONFIG
#RUN sed -i "s,^\(dir\s*\).*$,\1$REDIS_DATA," $REDIS_CONFIG
VOLUME [ "/host" ]
#EXPOSE 80
ENV LD_LIBRARY_PATH /root/lib
RUN mkdir $LD_LIBRARY_PATH
RUN cp /lib/x86_64-linux-gnu/libnss_files.so.2 $LD_LIBRARY_PATH
RUN perl -pi -e 's:/etc/hosts:/tmp/hosts:g' $LD_LIBRARY_PATH/libnss_files.so.2
#CMD /host/bin/run
CMD top

6
images/mysql.mk Normal file
View File

@@ -0,0 +1,6 @@
include $(DOCKER_HOME)/build/Makefile
NAME = mysql
VERSION = latest
build: base mysql

View File

@@ -1,25 +0,0 @@
FROM ubuntu:precise
RUN apt-get update
RUN apt-get install -y mysql-server
ENV VERSION stable
#RUN chmod +x /opt/redis-$VERSION/src/redis-server
ENV MYSQL_CONFIG /etc/mysql/my.cnf
ENV MYSQL_LOG /host/var/log/mysql/error.log
ENV MYSQL_DATA /host/var/lib/mysql
RUN sed -i "s,^\(log_error\s*=\s*\).*$,\1$MYSQL_LOG," $MYSQL_CONFIG
RUN sed -i "s,^\(datadir\s*=\s*\).*$,\1$MYSQL_DATA," $MYSQL_CONFIG
VOLUME [ "/host" ]
EXPOSE 3306
ENV LD_LIBRARY_PATH /root/lib
RUN mkdir $LD_LIBRARY_PATH
RUN cp /lib/x86_64-linux-gnu/libnss_files.so.2 $LD_LIBRARY_PATH
RUN perl -pi -e 's:/etc/hosts:/tmp/hosts:g' $LD_LIBRARY_PATH/libnss_files.so.2
CMD /host/bin/run

View File

@@ -0,0 +1,8 @@
<?php
$cfg['blowfish_secret'] = 'a8b7c6d';
$cfg['Servers'][1]['auth_type'] = 'cookie';
$cfg['Servers'][1]['connect_type'] = 'tcp';
$cfg['Servers'][1]['host'] = 'mysql';
$cfg['Servers'][1]['compress'] = false;
$cfg['Servers'][1]['extension'] = 'mysqli';
$cfg['Servers'][1]['AllowNoPassword'] = true;

6
images/webserver.mk Normal file
View File

@@ -0,0 +1,6 @@
include $(DOCKER_HOME)/build/Makefile
NAME = webserver
VERSION = latest
build: base lighttpd-php