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

View File

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

View File

@@ -11,4 +11,9 @@ apt_get_install_permanent() {
apt_get_install_temporary() {
echo $@ >> /build/temporary
$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
sleep 1
done
mysqladmin -u root password kreeft
mysqladmin -u root password dummy
fg
fi

View File

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

View File

@@ -5,7 +5,7 @@ set -x
## Remove temporary packages for minimal builds
if [ $MODE == "minimal" ]; then
cat /build/temporary | xargs apt-get -y autoremove
cat /build/temporary | xargs apt-get -y --purge autoremove
fi
## 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
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
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
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
apt_get_install_permanent apt-transport-https
## Upgrade all packages
#apt-get dist-upgrade -y --no-install-recommends
apt-get dist-upgrade -y --no-install-recommends
## Fix locale
apt_get_install_permanent language-pack-en

View File

@@ -4,7 +4,8 @@ source /build/config
set -x
## 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
pip install argparse