Squashed commit of the following:

- Bump basic OS to Alpine 3.9
 - Restructure repo and add layer versioning
 - Use JSON for all metadata
 - Merge abuild branch (but without abuild)
This commit is contained in:
Disassembler 2019-02-26 20:24:02 +01:00
parent b4f5979354
commit ce325cf3d0
No known key found for this signature in database
GPG Key ID: 524BD33A0EE29499
226 changed files with 1252 additions and 3232 deletions

View File

@ -1,13 +0,0 @@
### Steps to reproduce
1.
2.
3.
### Expected behaviour
### Observed behaviour
### Additional data (ticket URL, log, timestamp, stack trace etc.)

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "app-vmmgr"]
path = app-vmmgr
path = vmmgr
url = ssh://git@gitlab.dasm.cz:2222/Spotter-Cluster/vmmgr.git

View File

@ -11,7 +11,7 @@ In case you're setting up a VMWare virtual machine, select OS type *Other Linux
## Virtual Machine creation
Download **Alpine Virtual 3.8.0 x86_64** from <https://alpinelinux.org/downloads/> and boot from it. At the login prompt, use the root user without password to log in.
Download **Alpine Virtual 3.9.0 x86_64** from <https://alpinelinux.org/downloads/> and boot from it. At the login prompt, use the root user without password to log in.
```
# Set up interfaces (leave the default choices)
@ -19,8 +19,8 @@ setup-interfaces
ifup eth0
# Download and launch the setup script
wget dl.dasm.cz/alpine.sh
sh alpine.sh
wget dl.dasm.cz/_vm.sh
sh _vm.sh
```
The script will perform installation and configuration of Alpine linux, LXC and the whole VMMgr platform. Virtual machine is protected by LUKS-on-LVM disk encryption. The encryption password, which is simultaneously also a password for VMMgr web administration interface, will be asked for at the beginning of the script execution. Root access is disabled.
@ -31,7 +31,7 @@ After the script finishes and shuts down the virtual machine, remove CD/DVD driv
### First time setup
Follow the VM creation steps as above, but comment the line disabling the root login in *alpine.sh* file before its execution. After the script finishes and HDD size is adjusted, add serial port in the virtual machine settings and set it to use Unix socket or named pipe (eg. `\\.\pipe\alpine`). Then start the VM and connect to the serial port using *screen*, *PuTTY* or any other terminal client.
Follow the VM creation steps as above, but comment the line disabling the root login in *_vm.sh* file before its execution. After the script finishes and HDD size is adjusted, add serial port in the virtual machine settings and set it to use Unix socket or named pipe (eg. `\\.\pipe\alpine`). Then start the VM and connect to the serial port using *screen*, *PuTTY* or any other terminal client.
```
# Install git and OpenSSH client
@ -48,7 +48,7 @@ Assign the newly generated key to your GitLab account
git clone --recurse-submodules ssh://git@gitlab.dasm.cz:2222/Spotter-Cluster/Spotter-Cluster.git
# Install the build toolchain
Spotter-Cluster/zz-build/install-toolchain.sh
Spotter-Cluster/_build/install-toolchain.sh
```
After the script finishes, it is possible to connect via SSH (provided you have personal key in `authorized_keys`) as the toolchain sets up also *openssh-server*. The serial connection will work only until disconnected. If it should work indefinitely, run
@ -61,7 +61,7 @@ kill -1 1
### Building the packages
There are 3 distinct packaging systems.
1. Just a plain tar for basic OS setup used by *alpine.sh* installation script.
1. Just a plain tar for basic OS setup used by *_vm.sh* installation script.
2. Abuild for the native Alpine linux packages (APK) used for LXC, ACME client and VMMgr packaging.
3. `lxc-build`/`lxc-pack` for LXC images building and packaging.
@ -73,15 +73,8 @@ vi /srv/build/repokey.rsa
# Or generate a new pair
echo '/srv/build/repokey.rsa' | abuild-keygen
# Supply lxc-pack signing key
vi /srv/build/packages.key
# Or generate a new pair
openssl ecparam -genkey -name secp384r1 -out /srv/build/packages.key
openssl ec -in /srv/build/packages.key -pubout -out /srv/build/packages.pub
# Build all packages
Spotter-Cluster/zz-build/build-all.sh
Spotter-Cluster/_build/build-all.sh
```
The full build process takes considerable amount of time, so it is advised to have a persistent build VM.
@ -95,6 +88,7 @@ The full build process takes considerable amount of time, so it is advised to ha
| CKAN Datapusher | ckan-datapusher | 8004 | 8080 (HTTP) | - |
| Crisis Cleanup | crisiscleanup | 8005 | 8080 (HTTP) | cc |
| CTS | cts | 8006 | 8080 (HTTP) | cts |
| EcoGIS | ecogis | 8020 | 8080 (HTTP) | ecogis |
| FrontlineSMS | frontlinesms | 8018 | 8080 (HTTP) | sms |
| GNU Health | gnuhealth | 8008 | 8080 (HTTP) | gh |
| KanBoard | kanboard | 8009 | 8080 (HTTP) | kb |

107
_build/build-all.sh Executable file
View File

@ -0,0 +1,107 @@
#!/bin/sh
set -ev
cd $(realpath $(dirname "${0}"))
# Build basic.tar
cd ../_vm
tar cpf /srv/build/_vm.tar *
# Build native apps
cd ../acme-sh
abuild -F
cd ../vmmgr
abuild -F
cd ..
# Build runtimes
lxc-build alpine3.8
lxc-build alpine3.8-php5.6
lxc-build alpine3.8-nodejs8
lxc-build alpine3.8-ruby2.4
lxc-build alpine3.9
lxc-build alpine3.9-java8
lxc-build alpine3.9-php7.2
lxc-build alpine3.9-python2.7
lxc-build alpine3.9-python3.6
lxc-build alpine3.9-nodejs10
lxc-build alpine3.9-ruby2.4
lxc-build alpine3.9-tomcat8
# Build services
lxc-build activemq
lxc-build mariadb
lxc-build postgres
lxc-build rabbitmq
lxc-build redis
lxc-build solr
# Build applications
lxc-build ckan-datapusher
lxc-build ckan
lxc-build crisiscleanup
lxc-build cts
lxc-build ecogis
lxc-build frontlinesms
lxc-build gnuhealth
lxc-build kanboard
lxc-build mifosx
lxc-build motech
lxc-build odoo
lxc-build opendatakit
lxc-build opendatakit-build
lxc-build openmapkit
lxc-build pandora
lxc-build sahana-shared
lxc-build sahana
lxc-build sahana-demo
lxc-build sambro
lxc-build seeddms
lxc-build sigmah
lxc-build ushahidi
# Pack runtimes
lxc-pack alpine3.8
lxc-pack alpine3.8-php5.6
lxc-pack alpine3.8-nodejs8
lxc-pack alpine3.8-ruby2.4
lxc-pack alpine3.9
lxc-pack alpine3.9-java8
lxc-pack alpine3.9-php7.2
lxc-pack alpine3.9-python2.7
lxc-pack alpine3.9-python3.6
lxc-pack alpine3.9-nodejs10
lxc-pack alpine3.9-ruby2.4
lxc-pack alpine3.9-tomcat8
# Pack services
lxc-pack activemq
lxc-pack mariadb
lxc-pack postgres
lxc-pack rabbitmq
lxc-pack redis
lxc-pack solr
# Pack applications
lxc-pack ckan-datapusher
lxc-pack ckan
lxc-pack crisiscleanup
lxc-pack cts
lxc-pack ecogis
lxc-pack frontlinesms
lxc-pack gnuhealth
lxc-pack kanboard
lxc-pack mifosx
lxc-pack motech
lxc-pack odoo
lxc-pack opendatakit
lxc-pack opendatakit-build
lxc-pack openmapkit
lxc-pack pandora
lxc-pack sahana-shared
lxc-pack sahana
lxc-pack sahana-demo
lxc-pack sambro
lxc-pack seeddms
lxc-pack sigmah
lxc-pack ushahidi

View File

@ -17,19 +17,18 @@ cp root/.config/htop/htoprc /root/.config/htop/htoprc
rc-update add sshd boot
service sshd start
# Prepare build toolchain
# Prepare abuild toolchain
adduser root abuild
cp etc/abuild.conf /etc/abuild.conf
cp usr/bin/abuild /usr/bin/abuild
# Prepare LXC build toolchain
cp usr/bin/fix-apk /usr/bin/fix-apk
cp usr/bin/lxc-build /usr/bin/lxc-build
cp usr/bin/lxc-pack /usr/bin/lxc-pack
mkdir -p /srv/build/lxc
# Supply /srv/build/repokey.rsa
# Supply abuild key
# echo '/srv/build/repokey.rsa' | abuild-keygen
# Supply /srv/build/packages.key
# Supply LXC build key
# openssl ecparam -genkey -name secp384r1 -out /srv/build/packages.key
# openssl ec -in /srv/build/packages.key -pubout -out /srv/build/packages.pub

View File

@ -109,10 +109,12 @@ class LXCImage:
self.set_cwd(line.split()[1])
elif line.startswith('HALT'):
self.set_halt(line.split()[1])
# Add the final layer which can be treated as ephemeral
# Add the final layer which will be treated as ephemeral
self.add_layer('{}/delta0'.format(self.name))
def rebuild_config(self):
if not self.name:
return
if len(self.layers) == 1:
rootfs = self.layers[0]
else:
@ -148,9 +150,23 @@ class LXCImage:
subprocess.run([cmd]+self.layers, check=True)
def copy_files(self, src, dst):
src = os.path.join(self.build_dir, src)
dst = os.path.join(self.layers[-1], dst)
copy_tree(src, dst)
if src.startswith('http://') or src.startswith('https://'):
self.unpack_http_archive(src, dst)
else:
src = os.path.join(self.build_dir, src)
copy_tree(src, dst)
def unpack_http_archive(self, src, dst):
xf = 'xzf'
if src.endswith('.bz2'):
xf = 'xjf'
elif src.endswith('.xz'):
xf = 'xJf'
with subprocess.Popen(['wget', src, '-O', '-'], stdout=subprocess.PIPE) as wget:
with subprocess.Popen(['tar', xf, '-', '-C', dst], stdin=wget.stdout) as tar:
wget.stdout.close()
tar.wait()
def add_mount(self, type, src, dst):
self.mounts.append('lxc.mount.entry = {} {} none bind,create={} 0 0'.format(src, dst, type.lower()))
@ -187,7 +203,7 @@ def copy_tree(src, dst):
shutil.copystat(src, dst)
if __name__ == '__main__':
if len(sys.argv) != 2:
if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'):
print('Usage: lxc-build <buildpath>\n where the buildpath can be either specific lxcfile or a directory containing one')
else:
i = LXCImage(sys.argv[1])

View File

@ -11,24 +11,28 @@ from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives.serialization import load_pem_private_key
BUILD_ROOT = '/srv/build/lxc'
PKG_ROOT = '/srv/build/lxc'
PRIVATE_KEY = '/srv/build/packages.key'
LXC_ROOT = '/var/lib/lxc'
def pack(pkg_file):
if os.path.isdir(pkg_file):
pkg_file = os.path.join(pkg_file, 'pkg')
# Prepare metadata
meta = {}
with open(pkg_file) as f:
for line in f:
line = [l.strip() for l in line.split(':', 1)]
meta[line[0]] = line[1]
meta['deps'] = meta['deps'].split()
pkg_name = meta['pkg']
del meta['pkg']
def pack(path):
# Determine correct metadata file and package name
path = os.path.realpath(path)
if os.path.isdir(path):
meta_dir = path
meta_file = os.path.join(meta_dir, 'meta')
else:
meta_dir = os.path.dirname(path)
meta_file = path
pkg_name = os.path.basename(meta_dir)
tar_path = os.path.join(BUILD_ROOT, '{}.tar'.format(pkg_name))
# Load metadata
with open(meta_file) as f:
meta = json.load(f)
# Prepare package file names
os.makedirs(PKG_ROOT, 0o755, True)
tar_path = os.path.join(PKG_ROOT, '{}_{}-{}.tar'.format(pkg_name, meta['version'], meta['release']))
xz_path = '{}.xz'.format(tar_path)
# Remove old package
@ -40,11 +44,10 @@ def pack(pkg_file):
# Create archive
print('Archiving', meta['lxcpath'])
subprocess.run(['tar', '--xattrs', '-cpf', tar_path, os.path.join(LXC_ROOT, meta['lxcpath'])], cwd='/')
if '/' not in meta['lxcpath']:
# If lxcpath doesn't point to layer but is a full-featured container, pack also scripts
print('Archiving install/upgrade/uninstall scripts and related files')
cwd = os.path.dirname(os.path.abspath(pkg_file))
subprocess.run(['tar', '--transform', 's|^|srv/{}/|'.format(pkg_name), '-rpf', tar_path, 'install', 'install.sh', 'upgrade', 'upgrade.sh', 'uninstall', 'uninstall.sh'], cwd=cwd)
# Add install/upgrade/uninstall scripts
scripts = ('install', 'install.sh', 'upgrade', 'upgrade.sh', 'uninstall', 'uninstall.sh')
scripts = [s for s in scripts if os.path.exists(os.path.join(meta_dir, s))]
subprocess.run(['tar', '--transform', 's|^|srv/{}/|'.format(pkg_name), '-rpf', tar_path] + scripts, cwd=meta_dir)
# Compress the tarball with xz (LZMA2)
print('Compressing', tar_path, '({:.2f} MB)'.format(os.path.getsize(tar_path)/1048576))
subprocess.run(['xz', '-9', tar_path])
@ -53,7 +56,7 @@ def pack(pkg_file):
# Register package
print('Registering package')
packages = {}
packages_file = os.path.join(BUILD_ROOT, 'packages')
packages_file = os.path.join(PKG_ROOT, 'packages')
if os.path.exists(packages_file):
with open(packages_file, 'r') as f:
packages = json.load(f)
@ -63,13 +66,13 @@ def pack(pkg_file):
with open(packages_file, 'w') as f:
json.dump(packages, f, sort_keys=True, indent=4)
# Sign packages
# Sign packages file
print('Signing packages')
with open(PRIVATE_KEY, 'rb') as f:
priv_key = load_pem_private_key(f.read(), None, default_backend())
with open(os.path.join(BUILD_ROOT, 'packages'), 'rb') as f:
with open(os.path.join(PKG_ROOT, 'packages'), 'rb') as f:
data = f.read()
with open(os.path.join(BUILD_ROOT, 'packages.sig'), 'wb') as f:
with open(os.path.join(PKG_ROOT, 'packages.sig'), 'wb') as f:
f.write(priv_key.sign(data, ec.ECDSA(hashes.SHA512())))
def hash_file(file_path):
@ -83,7 +86,7 @@ def hash_file(file_path):
return sha512.hexdigest()
if __name__ == '__main__':
if len(sys.argv) != 2:
print('Usage: lxc-pack <pkgfile>')
if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'):
print('Usage: lxc-pack <buildpath>\n where the buildpath can be either specific meta file or a directory containing one')
else:
pack(sys.argv[1])

View File

@ -14,8 +14,8 @@ echo
# Set up repositories
cat <<EOF >/etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.8/main
http://dl-cdn.alpinelinux.org/alpine/v3.8/community
http://dl-cdn.alpinelinux.org/alpine/v3.9/main
http://dl-cdn.alpinelinux.org/alpine/v3.9/community
EOF
# Install disk management tools
@ -84,9 +84,10 @@ chroot /mnt setup-timezone -z Europe/Prague
# Install basic system
apk --no-cache add apache2-utils gettext
wget https://dl.dasm.cz/basic.tar -O - | tar xf - -C /mnt
chroot /mnt apk --no-cache add ca-certificates curl bridge e2fsprogs-extra gettext iptables kbd-misc libressl postfix nginx util-linux acme-sh@vm lxc@vm vmmgr@vm
wget https://dl.dasm.cz/_vm.tar -O - | tar xf - -C /mnt
chroot /mnt apk --no-cache add ca-certificates curl bridge e2fsprogs-extra gettext iptables kbd-misc libressl lxc postfix nginx util-linux acme-sh@vm vmmgr@vm
chroot /mnt newaliases
mkdir /mnt/var/log/lxc
for SERVICE in cgroups consolefont crond iptables networking nginx ntpd postfix swap urandom vmmgr; do
ln -s /etc/init.d/${SERVICE} /mnt/etc/runlevels/boot
done

3
_vm/etc/apk/repositories Normal file
View File

@ -0,0 +1,3 @@
http://dl-cdn.alpinelinux.org/alpine/v3.9/main
http://dl-cdn.alpinelinux.org/alpine/v3.9/community
@vm https://dl.dasm.cz/spotter-abuild

View File

@ -1,24 +1,28 @@
# Contributor: Disassembler <disassembler@dasm.cz>
# Maintainer: Disassembler <disassembler@dasm.cz>
pkgname=acme-sh
pkgver=2.7.9
pkgver=2.8.0
pkgrel=0
pkgdesc="A pure Unix shell script implementing ACME client protocol"
pkgdesc="A pure Unix shell ACME protocol client"
url="https://github.com/Neilpang/acme.sh"
arch="noarch"
license="GPL"
_commit=4f59a821d33281ff5a3090cbe8de47c5f0ae10ce
_commit=f62a4a0c0ccf6cd73b5746dd8b8790ce3c512833
source="${pkgname}-${pkgver}.tar.gz::https://github.com/Neilpang/acme.sh/archive/${_commit}.tar.gz"
builddir="${srcdir}/acme.sh-${_commit}"
options="!check"
build() {
return 0
}
package() {
mkdir -p ${pkgdir}/usr/bin
mkdir -p ${pkgdir}/etc/acme.sh.d
mkdir -p ${pkgdir}/etc/periodic/daily
sed 's|$HOME/.$PROJECT_NAME|/etc/acme.sh.d|' ${builddir}/acme.sh > ${pkgdir}/usr/bin/acme.sh
chmod +x ${pkgdir}/usr/bin/acme.sh
cp source/acme-sh ${pkgdir}/etc/periodic/daily/
cp ${startdir}/source/acme-sh ${pkgdir}/etc/periodic/daily/
}
sha512sums="93d38007c0c8187217ac220b09180c3a367a9b518d0bb777a58900de134f1afde54e6643c42426e18f65a18de0d77b0c685396b9c33198b927f0ce2b5da778d1 acme-sh-2.7.9.tar.gz"
sha512sums="399385c03954fb8c6c9be740ad46ed307ab1b902f88f4e7134fd837e4d189b387811469158fc05f1f8894f4622e5bbbec15ab4ef8eb433dd6dbfda585e7b25b7 acme-sh-2.8.0.tar.gz"

View File

@ -10,5 +10,3 @@ chown -R 61616:61616 /srv/activemq/data
# Create service
cp etc/init.d/activemq /etc/init.d/activemq
rc-update -u
exit 0

View File

@ -1,6 +1,6 @@
IMAGE activemq
LAYER shared/alpine
LAYER shared/java
LAYER shared/alpine3.9
LAYER shared/alpine3.9-java8
LAYER activemq/activemq
RUN EOF

9
activemq/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "ActiveMQ",
"desc-en": "ActiveMQ",
"lxcpath": "activemq",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-java8"]
}

View File

@ -1,4 +0,0 @@
pkg: activemq
lxcpath: activemq
version: 0.0.1
deps: java

View File

@ -4,5 +4,3 @@ set -ev
# Remove service
rm -f /etc/init.d/activemq
rc-update -u
exit 0

View File

@ -1,6 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/nodejs
LAYER shared/alpine3.8
LAYER shared/alpine3.8-nodejs8
RUN EOF
apk --no-cache add nodejs

9
alpine3.8-nodejs8/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro Node.js 8",
"desc-en": "Basic LXC layer with Node.js 8 runtime environment",
"lxcpath": "shared/alpine3.8-nodejs8",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.8"]
}

8
alpine3.8-php5.6/lxcfile Normal file
View File

@ -0,0 +1,8 @@
IMAGE build
LAYER shared/alpine3.8
LAYER shared/alpine3.8-php5.6
RUN EOF
apk --no-cache add nginx php5 php5-ctype php5-fpm php5-gd php5-json php5-mcrypt php5-opcache
ln -s /usr/bin/php5 /usr/bin/php
EOF

9
alpine3.8-php5.6/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro PHP 5",
"desc-en": "Basic LXC layer with PHP 5 runtime environment",
"lxcpath": "shared/alpine3.8-php5.6",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.8"]
}

View File

@ -1,6 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/ruby
LAYER shared/alpine3.8
LAYER shared/alpine3.8-ruby2.4
RUN EOF
# Install Ruby runtime dependencies

9
alpine3.8-ruby2.4/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro Ruby 2.4",
"desc-en": "Basic LXC layer with Ruby 2.4 runtime environment",
"lxcpath": "shared/alpine3.8-ruby2.4",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.8"]
}

13
alpine3.8/lxcfile Normal file
View File

@ -0,0 +1,13 @@
IMAGE build
LAYER shared/alpine3.8
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.8/x86_64/versions/library-3.8/x86_64/rootfs.tar.xz
RUN EOF
# Add edge/testing repository
echo '@em http://dl-cdn.alpinelinux.org/alpine/edge/main' >>/etc/apk/repositories
echo '@et http://dl-cdn.alpinelinux.org/alpine/edge/testing' >>/etc/apk/repositories
echo '@ec http://dl-cdn.alpinelinux.org/alpine/edge/community' >>/etc/apk/repositories
# Install s6 supervisor
apk --no-cache add libxml2 libxslt s6@em
EOF

9
alpine3.8/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s Alpine linuxem",
"desc-en": "Basic LXC layer with Alpine linux",
"lxcpath": "shared/alpine3.8",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": []
}

View File

@ -1,6 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/java
LAYER shared/alpine3.9
LAYER shared/alpine3.9-java8
RUN EOF
apk --no-cache add openjdk8-jre-base

9
alpine3.9-java8/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro Javu",
"desc-en": "Basic LXC layer with Java runtime environment",
"lxcpath": "shared/alpine3.9-java8",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

View File

@ -0,0 +1,7 @@
IMAGE build
LAYER shared/alpine3.9
LAYER shared/alpine3.9-nodejs10
RUN EOF
apk --no-cache add nodejs
EOF

9
alpine3.9-nodejs10/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro Node.js 10",
"desc-en": "Basic LXC layer with Node.js 10 runtime environment",
"lxcpath": "shared/alpine3.9-nodejs10",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

View File

@ -1,6 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/php
LAYER shared/alpine3.9
LAYER shared/alpine3.9-php7.2
RUN EOF
apk --no-cache add nginx php7 php7-ctype php7-fpm php7-gd php7-json php7-mbstring php7-mcrypt php7-opcache php7-session

9
alpine3.9-php7.2/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro PHP 7",
"desc-en": "Basic LXC layer with PHP 7 runtime environment",
"lxcpath": "shared/alpine3.9-php7.2",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

View File

@ -0,0 +1,7 @@
IMAGE build
LAYER shared/alpine3.9
LAYER shared/alpine3.9-python2.7
RUN EOF
apk --no-cache add python2
EOF

9
alpine3.9-python2.7/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro python 2",
"desc-en": "Basic LXC layer with python 2 runtime environment",
"lxcpath": "shared/alpine3.9-python2.7",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

View File

@ -1,7 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/libxml
LAYER shared/python3
LAYER shared/alpine3.9
LAYER shared/alpine3.9-python3.6
RUN EOF
apk --no-cache add python3

9
alpine3.9-python3.6/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro python 3",
"desc-en": "Basic LXC layer with python 3 runtime environment",
"lxcpath": "shared/alpine3.9-python3.6",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

33
alpine3.9-ruby2.4/lxcfile Normal file
View File

@ -0,0 +1,33 @@
IMAGE build
LAYER shared/alpine3.9
LAYER shared/alpine3.9-ruby2.4
RUN EOF
# Install Ruby runtime dependencies
apk --no-cache add gdbm libressl readline zlib
# Install Ruby build dependencies
apk --no-cache add --virtual .deps build-base autoconf gdbm-dev libressl-dev linux-headers readline-dev zlib-dev
# Download and unpack Ruby
mkdir -p /usr/src/ruby
wget http://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.xz -O - | tar xJf - -C /usr/src/ruby --strip-components=1
# Compile and install Ruby
cd /usr/src/ruby
autoconf
./configure --build=x86_64-linux-musl --disable-install-doc --enable-shared
make -j $(getconf _NPROCESSORS_ONLN)
make install
# Install RubyGems and Bundler
mkdir -p /usr/local/etc
echo -e 'install: --no-document\nupdate: --no-document' >/usr/local/etc/gemrc
gem update --system
# Cleanup
apk --no-cache del .deps
cd /root
rm -r /usr/src/ruby
rm -rf /root/.gem
EOF

9
alpine3.9-ruby2.4/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s běhovým prostředím pro Ruby 2.4",
"desc-en": "Basic LXC layer with Ruby 2.4 runtime environment",
"lxcpath": "shared/alpine3.9-ruby2.4",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9"]
}

View File

@ -1,11 +1,11 @@
IMAGE build
LAYER shared/alpine
LAYER shared/java
LAYER shared/tomcat
LAYER shared/alpine3.9
LAYER shared/alpine3.9-java8
LAYER shared/alpine3.9-tomcat8
RUN EOF
# Install Tomcat 8
wget http://mirror.hosting90.cz/apache/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.tar.gz -O - | tar xzf - -C /srv
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.tar.gz -O - | tar xzf - -C /srv
mv /srv/apache-tomcat-8.0.53 /srv/tomcat
# Make catalina.sh available globally

9
alpine3.9-tomcat8/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s JSP a servlet kontejnerem Tomcat 8",
"desc-en": "Basic LXC layer with Tomcat 8 JSP and servlet container",
"lxcpath": "shared/alpine3.9-tomcat8",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-java8"]
}

View File

@ -1,5 +1,6 @@
IMAGE build
LAYER shared/alpine
LAYER shared/alpine3.9
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.9/x86_64/versions/library-3.9/x86_64/rootfs.tar.xz
RUN EOF
# Add edge/testing repository
@ -8,5 +9,5 @@ RUN EOF
echo '@ec http://dl-cdn.alpinelinux.org/alpine/edge/community' >>/etc/apk/repositories
# Install s6 supervisor
apk --no-cache add s6@em
apk --no-cache add libxml2 libxslt s6
EOF

9
alpine3.9/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Základní LXC vrstva s Alpine linuxem",
"desc-en": "Basic LXC layer with Alpine linux",
"lxcpath": "shared/alpine3.9",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": []
}

View File

@ -1,43 +0,0 @@
# Contributor: Disassembler <disassembler@dasm.cz>
# Maintainer: Disassembler <disassembler@dasm.cz>
pkgname=lxc
pkgver=3.0.3
pkgrel=0
pkgdesc="Userspace interface for the Linux kernel containment features"
url="https://linuxcontainers.org/lxc/"
arch="x86_64"
license="GPL"
options="suid !check"
makedepends="automake autoconf bsd-compat-headers libcap-dev libseccomp-dev libtool linux-headers"
_commit=b8ab4849432cd64d789a757e385d1d324d88a61d
source="${pkgname}-${pkgver}.tar.gz::https://github.com/lxc/lxc/archive/${_commit}.tar.gz"
builddir="${srcdir}/${pkgname}-${_commit}"
build() {
cd ${builddir}
./autogen.sh
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-apparmor \
--with-distro=alpine \
--disable-werror
make
}
package() {
cd ${builddir}
make DESTDIR=${pkgdir} install
rm -rf ${pkgdir}/usr/include/
rm -rf ${pkgdir}/usr/lib/liblxc.a
rm -rf ${pkgdir}/usr/lib/liblxc.la
rm -rf ${pkgdir}/usr/lib/pkgconfig/
rm -rf ${pkgdir}/usr/share/doc/
rm -rf ${pkgdir}/usr/share/lxc/selinux/
rm -rf ${pkgdir}/usr/share/lxc/templates/
rm -rf ${pkgdir}/usr/share/man/
mkdir -p ${pkgdir}/var/log/lxc/
}
sha512sums="ef62f93799a14ba0e1b2fdbb4f69f8b531aef8eeecf537e2a08be3f30147484729bd41fa65e9ea5519c1c1f0e6f8940aac41ca5b749f89529a5b970e4ea0095c lxc-3.0.3.tar.gz"

@ -1 +0,0 @@
Subproject commit be5e95d5c0389ef024359cf4885a0a5792363c05

View File

@ -1,4 +0,0 @@
pkg: alpine
lxcpath: shared/alpine
version: 0.0.1
deps:

View File

@ -1,4 +0,0 @@
pkg: java
lxcpath: shared/java
version: 0.0.1
deps: alpine

View File

@ -1,7 +0,0 @@
IMAGE build
LAYER shared/alpine
LAYER shared/libxml
RUN EOF
apk --no-cache add libxml2 libxslt
EOF

View File

@ -1,4 +0,0 @@
pkg: libxml
lxcpath: shared/libxml
version: 0.0.1
deps: alpine

View File

@ -1,4 +0,0 @@
pkg: nodejs
lxcpath: shared/nodejs
version: 0.0.1
deps: alpine

View File

@ -1,4 +0,0 @@
pkg: php
lxcpath: shared/php
version: 0.0.1
deps: alpine

View File

@ -1,8 +0,0 @@
IMAGE build
LAYER shared/alpine
LAYER shared/libxml
LAYER shared/python2
RUN EOF
apk --no-cache add python2
EOF

View File

@ -1,4 +0,0 @@
pkg: python2
lxcpath: shared/python2
version: 0.0.1
deps: libxml

View File

@ -1,4 +0,0 @@
pkg: python3
lxcpath: shared/python3
version: 0.0.1
deps: libxml

View File

@ -1,4 +0,0 @@
pkg: ruby
lxcpath: shared/ruby
version: 0.0.1
deps: alpine

View File

@ -1,4 +0,0 @@
pkg: tomcat
lxcpath: shared/tomcat
version: 0.0.1
deps: java

View File

@ -1,3 +0,0 @@
http://dl-cdn.alpinelinux.org/alpine/v3.8/main
http://dl-cdn.alpinelinux.org/alpine/v3.8/community
@vm https://dl.dasm.cz/spotter-abuild

View File

@ -1 +0,0 @@
NTPD_OPTS="-N -p tik.cesnet.cz -p tak.cesnet.cz"

View File

@ -15,5 +15,3 @@ rc-update -u
# Install config update script
cp srv/ckan-datapusher/update-conf.sh /srv/ckan-datapusher/update-conf.sh
exit 0

View File

@ -1,7 +1,6 @@
IMAGE ckan-datapusher
LAYER shared/alpine
LAYER shared/libxml
LAYER shared/python2
LAYER shared/alpine3.9
LAYER shared/alpine3.9-python2.7
LAYER ckan-datapusher/ckan-datapusher
RUN EOF

9
ckan-datapusher/meta Normal file
View File

@ -0,0 +1,9 @@
{
"desc-cs": "Služba datového skladu pro extrakci dat",
"desc-en": "Data store data extraction service",
"lxcpath": "ckan-datapusher",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python2.7"]
}

View File

@ -1,4 +0,0 @@
pkg: ckan-datapusher
lxcpath: ckan-datapusher
version: 0.0.1
deps: python2

View File

@ -4,5 +4,3 @@ set -ev
# Remove service
rm -f /etc/init.d/ckan-datapusher
rc-update -u
exit 0

View File

@ -64,5 +64,3 @@ cp srv/ckan/update-conf.sh /srv/ckan/update-conf.sh
# Register application
vmmgr register-app ckan "${CKAN_ADMIN_USER}" "${CKAN_ADMIN_PWD}"
exit 0

View File

@ -1,7 +1,6 @@
IMAGE ckan
LAYER shared/alpine
LAYER shared/libxml
LAYER shared/python2
LAYER shared/alpine3.9
LAYER shared/alpine3.9-python2.7
LAYER ckan/ckan
RUN EOF
@ -31,6 +30,7 @@ RUN EOF
pip install -e 'git+https://github.com/aptivate/ckanext-datasetthumbnail#egg=ckanext_datasetthumbnail'
pip install -e 'git+https://github.com/datagvat/ckanext-dgvat_xls#egg=ckanext_dgvat_xls'
pip install -r /srv/ckan/src/ckanext-spatial/pip-requirements.txt
pip install -r /srv/ckan/src/ckanext-geoview/pip-requirements.txt
pip install -r /srv/ckan/src/ckanext-dgvat-xls/requirements.txt
# Create OS user

10
ckan/meta Normal file
View File

@ -0,0 +1,10 @@
{
"title": "CKAN",
"desc-cs": "Datový sklad",
"desc-en": "Data store",
"lxcpath": "ckan",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python2.7", "ckan-datapusher", "postgres", "redis", "solr"]
}

View File

@ -1,7 +0,0 @@
pkg: ckan
title: CKAN
lxcpath: ckan
desc: Datový sklad
host: ckan
version: 0.0.1
deps: python2 ckan-datapusher postgres redis solr

View File

@ -23,4 +23,5 @@ lxc-attach redis -- redis-cli -n 0 flushdb
rm -rf /srv/solr/data/ckan
[ ! -z ${START_SOLR} ] && service solr start
exit 0
# Unregister application
vmmgr unregister-app ckan

View File

@ -41,5 +41,3 @@ cp srv/crisiscleanup/update-conf.sh /srv/crisiscleanup/update-conf.sh
# Register application
vmmgr register-app crisiscleanup "${CRISISCLEANUP_ADMIN_EMAIL}" "${CRISISCLEANUP_ADMIN_PWD}"
exit 0

View File

@ -1,8 +1,7 @@
IMAGE crisiscleanup
LAYER shared/alpine
LAYER shared/ruby
LAYER shared/nodejs
LAYER shared/libxml
LAYER shared/alpine3.8
LAYER shared/alpine3.8-ruby2.4
LAYER shared/alpine3.8-nodejs8
LAYER crisiscleanup/crisiscleanup
FIXLAYER /usr/bin/fix-apk
@ -19,7 +18,7 @@ RUN EOF
# Clone CrisisCleanup
git clone --depth 1 https://github.com/CrisisCleanup/crisiscleanup /srv/crisiscleanup
# Hackfix ruby dependency version
# Hackfix ruby dependency versions
sed -i 's/2\.4\.4/2.4.5/' /srv/crisiscleanup/Gemfile
# Install Ruby and NodeJS dependencies

10
crisiscleanup/meta Normal file
View File

@ -0,0 +1,10 @@
{
"title": "Crisis Cleanup",
"desc-cs": "Mapování následků katastrof",
"desc-en": "Disaster relief mapping",
"lxcpath": "crisiscleanup",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-ruby2.4", "alpine3.9-nodejs10", "postgres"]
}

View File

@ -1,7 +0,0 @@
pkg: crisiscleanup
title: Crisis Cleanup
lxcpath: crisiscleanup
desc: Mapování následků katastrof
host: cc
version: 0.0.1
deps: ruby nodejs libxml postgres

View File

@ -10,4 +10,5 @@ rc-update -u
echo 'DROP DATABASE IF EXISTS crisiscleanup; DROP ROLE IF EXISTS crisiscleanup;' | lxc-attach -u 5432 -g 5432 postgres -- psql
[ ! -z ${STOP_POSTGRES} ] && service postgres stop
exit 0
# Unregister application
vmmgr unregister-app crisiscleanup

View File

@ -46,5 +46,3 @@ cp srv/cts/update-conf.sh /srv/cts/update-conf.sh
# Register application
vmmgr register-app cts "${CTS_ADMIN_EMAIL}" "${CTS_ADMIN_PWD}"
exit 0

View File

@ -1,7 +1,6 @@
IMAGE cts
LAYER shared/alpine
LAYER shared/libxml
LAYER shared/python2
LAYER shared/alpine3.9
LAYER shared/alpine3.9-python2.7
LAYER cts/cts
RUN EOF

Some files were not shown because too many files have changed in this diff Show More