New approach in package building and versioning

This commit is contained in:
Disassembler 2019-06-25 15:56:35 +02:00
parent 446b855d03
commit afbd4a0f60
Signed by: Disassembler
GPG Key ID: 524BD33A0EE29499
89 changed files with 729 additions and 848 deletions

View File

@ -1,4 +1,5 @@
#!/usr/bin/python3 #!/usr/bin/python3
# -*- coding: utf-8 -*-
import os import os
import sys import sys
@ -39,5 +40,6 @@ def fix_world(layers):
with open(os.path.join(layers[-1], 'etc/apk/world'), 'w') as f: with open(os.path.join(layers[-1], 'etc/apk/world'), 'w') as f:
f.writelines(world) f.writelines(world)
fix_installed(sys.argv[1:]) if __name__ == '__main__':
fix_world(sys.argv[1:]) fix_installed(sys.argv[1:])
fix_world(sys.argv[1:])

View File

@ -1,210 +1,11 @@
#!/usr/bin/python3 #!/usr/bin/python3
# -*- coding: utf-8 -*-
import os from lxcbuild.lxcimage import LXCImage
import shutil
import subprocess
import sys
LXC_ROOT = '/var/lib/lxc'
CONFIG_TEMPLATE = '''# Image name
lxc.uts.name = {name}
# Network
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
# Volumes
lxc.rootfs.path = {rootfs}
# Mounts
lxc.mount.entry = shm dev/shm tmpfs rw,nodev,noexec,nosuid,relatime,mode=1777,create=dir 0 0
lxc.mount.entry = /etc/hosts etc/hosts none bind,create=file 0 0
lxc.mount.entry = /etc/resolv.conf etc/resolv.conf none bind,create=file 0 0
{mounts}
# Init
lxc.init.cmd = {cmd}
lxc.init.uid = {uid}
lxc.init.gid = {gid}
lxc.init.cwd = {cwd}
# Environment
lxc.environment = PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
{env}
# Halt
lxc.signal.halt = {halt}
# Log
lxc.console.size = 1MB
lxc.console.logfile = /var/log/lxc/{name}.log
# Other
lxc.arch = x86_64
lxc.cap.drop = sys_admin
lxc.hook.pre-start = /usr/bin/vmmgr prepare-container
lxc.hook.start-host = /usr/bin/vmmgr register-container
lxc.hook.post-stop = /usr/bin/vmmgr unregister-container
lxc.include = /usr/share/lxc/config/common.conf
'''
class LXCImage:
def __init__(self, build_path):
self.name = None
self.layers = []
self.mounts = []
self.env = []
self.uid = 0
self.gid = 0
self.cmd = '/bin/true'
self.cwd = '/'
self.halt = 'SIGINT'
if os.path.isfile(build_path):
self.lxcfile = os.path.realpath(build_path)
self.build_dir = os.path.dirname(self.lxcfile)
else:
self.build_dir = os.path.realpath(build_path)
self.lxcfile = os.path.join(self.build_dir, 'lxcfile')
def build(self):
with open(self.lxcfile, 'r') as f:
lxcfile = [l.strip() for l in f.readlines()]
script = []
script_eof = None
for line in lxcfile:
if script_eof:
if line == script_eof:
script_eof = None
self.run_script(script)
else:
script.append(line)
elif line.startswith('RUN'):
script = []
script_eof = line.split()[1]
elif line.startswith('IMAGE'):
self.set_name(line.split()[1])
elif line.startswith('LAYER'):
self.add_layer(line.split()[1])
elif line.startswith('FIXLAYER'):
self.fix_layer(line.split()[1])
elif line.startswith('COPY'):
srcdst = line.split()
self.copy_files(srcdst[1], srcdst[2] if len(srcdst) == 3 else '')
elif line.startswith('MOUNT'):
mount = line.split()
self.add_mount(mount[1], mount[2], mount[3])
elif line.startswith('ENV'):
env = line.split()
self.add_env(env[1], env[2])
elif line.startswith('USER'):
uidgid = line.split()
self.set_user(uidgid[1], uidgid[2])
elif line.startswith('CMD'):
self.set_cmd(' '.join(line.split()[1:]))
elif line.startswith('WORKDIR'):
self.set_cwd(line.split()[1])
elif line.startswith('HALT'):
self.set_halt(line.split()[1])
# 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:
# Multiple lower overlayfs layers are ordered from right to left (lower2:lower1:rootfs:upper)
rootfs = 'overlay:{}:{}'.format(':'.join(self.layers[:-1][::-1]), self.layers[-1])
mounts = '\n'.join(self.mounts)
env = '\n'.join(self.env)
with open(os.path.join(LXC_ROOT, self.name, 'config'), 'w') as f:
f.write(CONFIG_TEMPLATE.format(name=self.name,
rootfs=rootfs, mounts=mounts, env=env,
uid=self.uid, gid=self.gid,
cmd=self.cmd, cwd=self.cwd, halt=self.halt))
def run_script(self, script):
sh = os.path.join(self.layers[-1], 'run.sh')
with open(sh, 'w') as f:
f.write('#!/bin/sh\nset -ev\n\n{}\n'.format('\n'.join(script)))
os.chmod(sh, 0o700)
subprocess.run(['lxc-execute', '-n', self.name, '--', '/bin/sh', '-lc', '/run.sh'], check=True)
os.unlink(sh)
def set_name(self, name):
self.name = name
os.makedirs(os.path.join(LXC_ROOT, self.name), 0o755, True)
def add_layer(self, layer):
layer = os.path.join(LXC_ROOT, layer)
self.layers.append(layer)
os.makedirs(layer, 0o755, True)
self.rebuild_config()
def fix_layer(self, cmd):
subprocess.run([cmd]+self.layers, check=True)
def copy_files(self, src, dst):
dst = os.path.join(self.layers[-1], 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()))
self.rebuild_config()
def add_env(self, key, value):
self.env.append('lxc.environment = {}={}'.format(key, value))
self.rebuild_config()
def set_user(self, uid, gid):
self.uid = uid
self.gid = gid
self.rebuild_config()
def set_cmd(self, cmd):
self.cmd = cmd
self.rebuild_config()
def set_cwd(self, cwd):
self.cwd = cwd
self.rebuild_config()
def set_halt(self, halt):
self.halt = halt
self.rebuild_config()
def copy_tree(src, dst):
if not os.path.isdir(src):
shutil.copy2(src, dst)
else:
os.makedirs(dst, exist_ok=True)
for name in os.listdir(src):
copy_tree(os.path.join(src, name), os.path.join(dst, name))
shutil.copystat(src, dst)
if __name__ == '__main__': if __name__ == '__main__':
if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'): 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') print('Usage: lxc-build <buildpath>\n where the buildpath can be either specific lxcfile or a directory containing one')
else: else:
i = LXCImage(sys.argv[1]) image = LXCImage(sys.argv[1])
i.build() image.build_and_pack()

View File

@ -1,92 +0,0 @@
#!/usr/bin/python3
import hashlib
import json
import os
import subprocess
import sys
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives.serialization import load_pem_private_key
PKG_ROOT = '/srv/build/lxc'
PRIVATE_KEY = '/srv/build/packages.key'
LXC_ROOT = '/var/lib/lxc'
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)
# 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
if os.path.exists(tar_path):
os.unlink(tar_path)
if os.path.exists(xz_path):
os.unlink(xz_path)
# Create archive
print('Archiving', meta['lxcpath'])
subprocess.run(['tar', '--xattrs', '-cpf', tar_path, os.path.join(LXC_ROOT, meta['lxcpath'])], 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])
print('Compressed ', xz_path, '({:.2f} MB)'.format(os.path.getsize(xz_path)/1048576))
# Register package
print('Registering package')
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)
packages[pkg_name] = meta
packages[pkg_name]['size'] = os.path.getsize(xz_path)
packages[pkg_name]['sha512'] = hash_file(xz_path)
with open(packages_file, 'w') as f:
json.dump(packages, f, sort_keys=True, indent=4)
# 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(PKG_ROOT, 'packages'), 'rb') as f:
data = f.read()
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):
sha512 = hashlib.sha512()
with open(file_path, 'rb') as f:
while True:
data = f.read(65536)
if not data:
break
sha512.update(data)
return sha512.hexdigest()
if __name__ == '__main__':
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

@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@ -0,0 +1,213 @@
# -*- coding: utf-8 -*-
import os
import shutil
import subprocess
import sys
LXC_ROOT = '/var/lib/lxc'
CONFIG_TEMPLATE = '''# Image name
lxc.uts.name = {name}
# Network
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
# Volumes
lxc.rootfs.path = {rootfs}
# Mounts
lxc.mount.entry = shm dev/shm tmpfs rw,nodev,noexec,nosuid,relatime,mode=1777,create=dir 0 0
lxc.mount.entry = /etc/hosts etc/hosts none bind,create=file 0 0
lxc.mount.entry = /etc/resolv.conf etc/resolv.conf none bind,create=file 0 0
{mounts}
# Init
lxc.init.uid = {uid}
lxc.init.gid = {gid}
lxc.init.cwd = {cwd}
# Environment
lxc.environment = PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
{env}
# Halt
lxc.signal.halt = {halt}
# Log
lxc.console.size = 1MB
lxc.console.logfile = /var/log/lxc/{name}.log
# Other
lxc.arch = x86_64
lxc.cap.drop = sys_admin
lxc.hook.pre-start = /usr/bin/vmmgr prepare-container
lxc.hook.start-host = /usr/bin/vmmgr register-container
lxc.hook.post-stop = /usr/bin/vmmgr unregister-container
lxc.include = /usr/share/lxc/config/common.conf
'''
class LXCBuilder:
def __init__(self, image):
self.image = image
self.script = []
self.script_eof = None
self.already_built = False
def build(self):
with open(self.image.lxcfile, 'r') as f:
for line in f:
line = line.strip()
if self.script_eof:
if line == self.script_eof:
self.script_eof = None
self.run_script(self.script)
else:
self.script.append(line)
elif line:
self.process_line(*line.split(None, 1))
def process_line(self, directive, args):
if 'RUN' == directive:
self.script = []
self.script_eof = args
elif 'IMAGE' == directive:
self.set_name(*args.split())
elif 'META' == directive:
self.add_meta(*args.split(None, 1))
elif 'LAYER' == directive:
self.add_layer(*args.split())
elif 'FIXLAYER' == directive:
self.fix_layer(args.split())
elif 'COPY' == directive:
srcdst = args.split()
self.copy_files(srcdst[0], srcdst[1] if len(srcdst) == 2 else '')
elif 'MOUNT' == directive:
self.add_mount(args.split())
elif 'ENV' == directive:
self.add_env(*args.split(None, 1))
elif 'USER' == directive:
self.set_user(*args.split())
elif 'CMD' == directive:
self.set_cmd(args)
elif 'WORKDIR' == directive:
self.set_cwd(args)
elif 'HALT' == directive:
self.set_halt(args)
def get_layer_path(self, layer):
return os.path.join(LXC_ROOT, 'storage', layer)
def rebuild_config(self):
if not self.image.upper_layer:
return
upper_layer = self.get_layer_path(self.image.upper_layer)
if not self.image.layers:
rootfs = upper_layer
else:
# Multiple lower overlayfs layers are ordered from right to left (lower2:lower1:rootfs:upper)
layers = [self.get_layer_path(layer) for layer in self.image.layers]
rootfs = 'overlay:{}:{}'.format(':'.join(layers[::-1]), upper_layer)
mounts = '\n'.join(['lxc.mount.entry = {} {} none bind,create={} 0 0'.format(m[1], m[2], m[0].lower()) for m in self.image.mounts])
env = '\n'.join(['lxc.environment = {}={}'.format(e[0], e[1]) for e in self.image.env])
cwd = self.image.cwd if self.image.cwd else '/'
halt = self.image.halt if self.image.halt else 'SIGINT'
with open(os.path.join(LXC_ROOT, self.image.upper_layer, 'config'), 'w') as f:
f.write(CONFIG_TEMPLATE.format(name=self.image.upper_layer, rootfs=rootfs, mounts=mounts, env=env, uid=self.image.uid, gid=self.image.gid, cwd=cwd, halt=halt))
def run_script(self, script):
if self.already_built:
return
sh = os.path.join(self.get_layer_path(self.image.upper_layer), 'run.sh')
with open(sh, 'w') as f:
f.write('#!/bin/sh\nset -ev\n\n{}\n'.format('\n'.join(script)))
os.chmod(sh, 0o700)
subprocess.run(['lxc-execute', '-n', self.image.upper_layer, '--', '/bin/sh', '-lc', '/run.sh'], check=True)
os.unlink(sh)
def set_name(self, name, version):
self.image.name = name
self.image.version = version
self.image.upper_layer = '{}_{}'.format(self.image.name, self.image.version)
layer_path = self.get_layer_path(self.image.upper_layer)
if os.path.exists(layer_path):
self.already_built = True
print('Layer {} already exists, skipping build tasks'.format(self.image.upper_layer))
else:
os.makedirs(layer_path, 0o755, True)
os.makedirs(os.path.join(LXC_ROOT, self.image.upper_layer), 0o755, True)
self.rebuild_config()
def add_meta(self, key, value):
self.image.meta[key] = value
def add_layer(self, name, version):
self.image.layers.append('{}_{}'.format(name, version))
self.rebuild_config()
def fix_layer(self, cmd):
if self.already_built:
return
layers = [self.get_layer_path(layer) for layer in self.image.layers]
layers.append(self.get_layer_path(self.image.upper_layer))
subprocess.run([cmd]+layers, check=True)
def copy_files(self, src, dst):
if self.already_built:
return
dst = os.path.join(self.get_layer_path(self.image.upper_layer), dst)
if src.startswith('http://') or src.startswith('https://'):
unpack_http_archive(src, dst)
else:
src = os.path.join(self.image.build_dir, src)
copy_tree(src, dst)
def add_mount(self, args):
self.image.mounts.append(args)
if not self.already_built:
self.rebuild_config()
def add_env(self, args):
self.image.env.append(args)
if not self.already_built:
self.rebuild_config()
def set_user(self, uid, gid):
self.image.uid = uid
self.image.gid = gid
if not self.already_built:
self.rebuild_config()
def set_cmd(self, cmd):
self.image.cmd = cmd
def set_cwd(self, cwd):
self.image.cwd = cwd
if not self.already_built:
self.rebuild_config()
def set_halt(self, halt):
self.image.halt = halt
if not self.already_built:
self.rebuild_config()
def unpack_http_archive(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 copy_tree(src, dst):
if not os.path.isdir(src):
shutil.copy2(src, dst)
else:
os.makedirs(dst, exist_ok=True)
for name in os.listdir(src):
copy_tree(os.path.join(src, name), os.path.join(dst, name))
shutil.copystat(src, dst)

View File

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
import os
from .lxcbuilder import LXCBuilder
from .lxcpacker import LXCPacker
class LXCImage:
def __init__(self, build_path):
self.name = None
self.version = None
self.meta = {}
self.layers = []
self.upper_layer = None
self.mounts = []
self.env = []
self.uid = 0
self.gid = 0
self.cmd = None
self.cwd = None
self.halt = None
if os.path.isfile(build_path):
self.lxcfile = os.path.realpath(build_path)
self.build_dir = os.path.dirname(self.lxcfile)
else:
self.build_dir = os.path.realpath(build_path)
self.lxcfile = os.path.join(self.build_dir, 'lxcfile')
def build_and_pack(self):
builder = LXCBuilder(self)
builder.build()
packer = LXCPacker(self)
packer.pack()

View File

@ -0,0 +1,89 @@
# -*- coding: utf-8 -*-
import hashlib
import json
import os
import subprocess
import sys
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives.serialization import load_pem_private_key
PKG_ROOT = '/srv/build/lxc'
PRIVATE_KEY = '/srv/build/packages.key'
LXC_STORAGE = '/var/lib/lxc/storage'
class LXCPacker:
def __init__(self, image):
self.image = image
self.tar_path = None
self.xz_path = None
def pack(self):
# Prepare package file names
self.tar_path = os.path.join(PKG_ROOT, '{}.tar'.format(self.image.upper_layer))
self.xz_path = '{}.xz'.format(self.tar_path)
if os.path.exists(self.xz_path):
print('Package {} already exists, skipping packaging tasks'.format(self.xz_path))
return
os.makedirs(PKG_ROOT, 0o755, True)
self.create_archive()
self.register_package()
self.sign_packages()
def create_archive(self):
# Create archive
print('Archiving', self.image.upper_layer)
subprocess.run(['tar', '--xattrs', '-cpf', self.tar_path, os.path.join(LXC_STORAGE, self.image.upper_layer)], 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(self.image.build_dir, s))]
subprocess.run(['tar', '--transform', 's|^|srv/{}/|'.format(self.image.upper_layer), '-rpf', self.tar_path] + scripts, cwd=self.image.build_dir)
# Compress the tarball with xz (LZMA2)
print('Compressing', self.tar_path, '({:.2f} MB)'.format(os.path.getsize(self.tar_path)/1048576))
subprocess.run(['xz', '-9', self.tar_path])
print('Compressed ', self.xz_path, '({:.2f} MB)'.format(os.path.getsize(self.xz_path)/1048576))
def register_package(self):
# Prepare metadata
meta = self.image.meta.copy()
meta['lxc'] = {}
for key in ('layers', 'mounts', 'env', 'cmd', 'cwd', 'uid', 'gid', 'halt'):
value = getattr(self.image, key)
if value:
meta['lxc'][key] = value
# Register package
print('Registering package')
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)
packages[self.image.name] = meta
packages[self.image.name]['size'] = os.path.getsize(self.xz_path)
packages[self.image.name]['sha512'] = hash_file(self.xz_path)
with open(packages_file, 'w') as f:
json.dump(packages, f, sort_keys=True, indent=4)
def sign_packages(self):
# 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(PKG_ROOT, 'packages'), 'rb') as f:
data = f.read()
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):
sha512 = hashlib.sha512()
with open(file_path, 'rb') as f:
while True:
data = f.read(65536)
if not data:
break
sha512.update(data)
return sha512.hexdigest()

View File

@ -1,7 +1,12 @@
IMAGE ckan-datapusher IMAGE ckan-datapusher 0.0.13-190620
LAYER shared/alpine3.9 META title CKAN DataPusher
LAYER shared/alpine3.9-python2.7 META desc-cs Služba datového skladu pro extrakci dat
LAYER ckan-datapusher/ckan-datapusher META desc-en Data store data extraction service
META type app
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,9 +0,0 @@
{
"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,7 +1,13 @@
IMAGE ckan IMAGE ckan 2.8.2-190620
LAYER shared/alpine3.9 META title CKAN
LAYER shared/alpine3.9-python2.7 META desc-cs Datový sklad
LAYER ckan/ckan META desc-en Data store
META type app
META license GPL
META depends ckan-datapusher postgres redis solr
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"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,8 +1,14 @@
IMAGE crisiscleanup IMAGE crisiscleanup 2.2.0-190620
LAYER shared/alpine3.8 META title Crisis Cleanup
LAYER shared/alpine3.8-ruby2.4 META desc-cs Mapování následků katastrof
LAYER shared/alpine3.8-nodejs8 META desc-en Disaster relief mapping
LAYER crisiscleanup/crisiscleanup META type app
META license GPL
META depends postgres
LAYER alpine3.8 3.8.4-190620
LAYER alpine3.8-ruby2.4 2.4.5-190620
LAYER alpine3.8-nodejs8 8.14.0-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"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.8-ruby2.4", "alpine3.8-nodejs8", "postgres"]
}

View File

@ -1,7 +1,13 @@
IMAGE cts IMAGE cts 0.8.0-190620
LAYER shared/alpine3.9 META title CTS
LAYER shared/alpine3.9-python2.7 META desc-cs Sledovací systém komodit
LAYER cts/cts META desc-en Commodity tracking system
META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "CTS",
"desc-cs": "Sledovací systém komodit",
"desc-en": "Commodity tracking system",
"lxcpath": "cts",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python2.7", "postgres"]
}

View File

@ -1,7 +1,13 @@
IMAGE ecogis IMAGE ecogis 0.0.1-190620
LAYER shared/alpine3.8 META title EcoGIS
LAYER shared/alpine3.8-php5.6 META desc-cs EcoGIS
LAYER ecogis/ecogis META desc-en EcoGIS
META type app
META license GPL
META depends postgres
LAYER alpine3.8 3.8.4-190620
LAYER alpine3.8-php5.6 5.6.40-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "EcoGIS",
"desc-cs": "EcoGIS",
"desc-en": "EcoGIS",
"lxcpath": "ecogis",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.8-php5.6", "postgres"]
}

View File

@ -1,7 +1,12 @@
IMAGE frontlinesms IMAGE frontlinesms 2.6.5-190620
LAYER shared/alpine3.9 META title FrontlineSMS
LAYER shared/alpine3.9-java8 META desc-cs Hromadné odesílání zpráv
LAYER frontlinesms/frontlinesms META desc-en Bulk SMS messaging
META type app
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "FrontlineSMS",
"desc-cs": "Hromadné odesílání zpráv",
"desc-en": "Bulk SMS messaging",
"lxcpath": "frontlinesms",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-java8"]
}

View File

@ -1,8 +1,14 @@
IMAGE gnuhealth IMAGE gnuhealth 3.4.1-190620
LAYER shared/alpine3.9 META title GNU Health
LAYER shared/alpine3.9-python3.6 META desc-cs Administrace lékařských záznamů
LAYER shared/alpine3.9-nodejs10 META desc-en Medical records administration
LAYER gnuhealth/gnuhealth META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python3.6 3.6.8-190620
LAYER alpine3.9-nodejs10 10.14.2-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"title": "GNU Health",
"desc-cs": "Lékařské záznamy pacientů",
"desc-en": "Lékařské záznamy pacientů",
"lxcpath": "gnuhealth",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python3.6", "alpine3.9-nodejs10", "postgres"]
}

View File

@ -1,7 +1,13 @@
IMAGE kanboard IMAGE kanboard 1.2.9-190620
LAYER shared/alpine3.9 META title KanBoard
LAYER shared/alpine3.9-php7.2 META desc-cs Kanban řízení projektů
LAYER kanboard/kanboard META desc-en Kanban project management
META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-php7.2 7.2.19-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "KanBoard",
"desc-cs": "Kanban řízení projektů",
"desc-en": "Kanban řízení projektů",
"lxcpath": "kanboard",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-php7.2", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE mifosx IMAGE mifosx 18.03.01-190620
LAYER shared/alpine3.9 META title Mifos X
LAYER shared/alpine3.9-java8 META desc-cs Mikrofinancování rozvojových projektů
LAYER shared/alpine3.9-tomcat8.5 META desc-en Development projects microfinancing
LAYER mifosx/mifosx META type app
META license GPL
META depends mariadb
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
LAYER alpine3.9-tomcat8.5 8.5.41-190620
RUN EOF RUN EOF
# Install full-featured wget to work around sourceforge bugs # Install full-featured wget to work around sourceforge bugs

View File

@ -1,10 +0,0 @@
{
"title": "Mifos X",
"desc-cs": "Mikrofinancování rozvojových projektů",
"desc-en": "Mikrofinancování rozvojových projektů",
"lxcpath": "mifosx",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-tomcat8.5", "mariadb"]
}

View File

@ -1,8 +1,14 @@
IMAGE motech IMAGE motech 1.3.0-190620
LAYER shared/alpine3.9 META title Motech
LAYER shared/alpine3.9-java8 META desc-cs Automatizace komunikace
LAYER shared/alpine3.9-tomcat7 META desc-en Communication automation
LAYER motech/motech META type app
META license GPL
META depends activemq postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
LAYER alpine3.9-tomcat7 7.0.94-190620
RUN EOF RUN EOF
# Download Motech # Download Motech

View File

@ -1,10 +0,0 @@
{
"title": "Motech",
"desc-cs": "Automatizace komunikace",
"desc-en": "Automatizace komunikace",
"lxcpath": "motech",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-tomcat7", "activemq", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE odoo IMAGE odoo 12.0.0-190620
LAYER shared/alpine3.9 META title Odoo
LAYER shared/alpine3.9-python3.6 META desc-cs Sada aplikací pro správu organizace
LAYER shared/alpine3.9-nodejs10 META desc-en Company management application suite
LAYER odoo/odoo META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python3.6 3.6.8-190620
LAYER alpine3.9-nodejs10 10.14.2-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"title": "Odoo",
"desc-cs": "Sada aplikací pro správu organizace",
"desc-en": "Sada aplikací pro správu organizace",
"lxcpath": "odoo",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python3.6", "alpine3.9-nodejs10", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE opendatakit-build IMAGE opendatakit-build 0.3.5-190620
LAYER shared/alpine3.9 META title OpenDataKit Build
LAYER shared/alpine3.9-ruby2.4 META desc-cs Sběr formulářových dat - návrh formulářů
LAYER shared/alpine3.9-nodejs10 META desc-en Form data collection - Form designer
LAYER opendatakit-build/opendatakit-build META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-ruby2.4 2.4.5-190620
LAYER alpine3.9-nodejs10 10.14.2-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"title": "OpenDataKit Build",
"desc-cs": "Sběr formulářových dat - Aplikace pro návrh formulářů",
"desc-en": "Sběr formulářových dat - Aplikace pro návrh formulářů",
"lxcpath": "opendatakit-build",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-ruby2.4", "alpine3.9-nodejs10", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE opendatakit IMAGE opendatakit 2.0.3-190620
LAYER shared/alpine3.9 META title OpenDataKit
LAYER shared/alpine3.9-java8 META desc-cs Sběr formulářových dat
LAYER shared/alpine3.9-tomcat8.5 META desc-en Form data collection
LAYER opendatakit/opendatakit META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
LAYER alpine3.9-tomcat8.5 8.5.41-190620
RUN EOF RUN EOF
# Download OpenDataKit # Download OpenDataKit

View File

@ -1,10 +0,0 @@
{
"title": "OpenDataKit",
"desc-cs": "Sběr formulářových dat",
"desc-en": "Sběr formulářových dat",
"lxcpath": "opendatakit",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-tomcat8.5", "postgres"]
}

View File

@ -1,9 +1,14 @@
IMAGE openmapkit IMAGE openmapkit 0.12.0-190620
LAYER shared/alpine3.9 META title OpenMapKit
LAYER shared/alpine3.9-java8 META desc-cs Sběr mapových dat
LAYER shared/alpine3.9-python2.7 META desc-en Map data collection
LAYER shared/alpine3.9-nodejs10 META type app
LAYER openmapkit/openmapkit META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
LAYER alpine3.9-python2.7 2.7.16-190620
LAYER alpine3.9-nodejs10 10.14.2-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"title": "OpenMapKit",
"desc-cs": "Sběr mapových dat",
"desc-en": "Sběr mapových dat",
"lxcpath": "openmapkit",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-java8", "alpine3.9-python2.7", "alpine3.9-nodejs10", "postgres"]
}

View File

@ -1,7 +1,13 @@
IMAGE pandora IMAGE pandora 0.0.1-190620
LAYER shared/alpine3.9 META title Pan.do/ra
LAYER shared/alpine3.9-python3.6 META desc-cs Archiv medií
LAYER pandora/pandora META desc-en Media archive
META type app
META license GPL
META depends postgres rabbitmq
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python3.6 3.6.8-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "Pan.do/ra",
"desc-cs": "Archiv medií",
"desc-en": "Media archive",
"lxcpath": "pandora",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python3.6", "postgres", "rabbitmq"]
}

View File

@ -1,8 +1,14 @@
IMAGE sahana-demo IMAGE sahana-demo 0.0.1-190620
LAYER shared/alpine3.9 META title Sahana Eden - Demo
LAYER shared/alpine3.9-python2.7 META desc-cs Řízení humanítární činnosti - Demo instance
LAYER shared/sahana META desc-en Management of humanitarian activities - Demo instance
LAYER sahana-demo/sahana-demo META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
LAYER sahana-shared 0.0.1-190620
MOUNT DIR /srv/sahana-demo/conf srv/web2py/applications/eden/models MOUNT DIR /srv/sahana-demo/conf srv/web2py/applications/eden/models
MOUNT DIR /srv/sahana-demo/data/default srv/web2py/applications/eden/modules/templates/default MOUNT DIR /srv/sahana-demo/data/default srv/web2py/applications/eden/modules/templates/default

View File

@ -1,10 +0,0 @@
{
"title": "Sahana Eden - Demo",
"desc-cs": "Řízení humanítární činnosti - Ukázková instance",
"desc-en": "Řízení humanítární činnosti - Ukázková instance",
"lxcpath": "sahana-demo",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["sahana-shared", "postgres"]
}

View File

@ -1,7 +1,12 @@
IMAGE sahana IMAGE sahana-shared 0.0.1-190620
LAYER shared/alpine3.9 META title Sahana Eden - Shared layer
LAYER shared/alpine3.9-python2.7 META desc-cs Řízení humanítární činnosti - sdílená vrstva
LAYER shared/sahana META desc-en Management of humanitarian activities - shared layer
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,9 +0,0 @@
{
"desc-cs": "Řízení humanítární činnosti - Sdílená vrstva",
"desc-en": "Řízení humanítární činnosti - Sdílená vrstva",
"lxcpath": "shared/sahana",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-python2.7"]
}

View File

@ -1,8 +1,14 @@
IMAGE sahana IMAGE sahana 0.0.1-190620
LAYER shared/alpine3.9 META title Sahana Eden
LAYER shared/alpine3.9-python2.7 META desc-cs Řízení humanítární činnosti
LAYER shared/sahana META desc-en Management of humanitarian activities
LAYER sahana/sahana META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
LAYER sahana-shared 0.0.1-190620
MOUNT DIR /srv/sahana/conf srv/web2py/applications/eden/models MOUNT DIR /srv/sahana/conf srv/web2py/applications/eden/models
MOUNT DIR /srv/sahana/data/Spotter srv/web2py/applications/eden/modules/templates/Spotter MOUNT DIR /srv/sahana/data/Spotter srv/web2py/applications/eden/modules/templates/Spotter

View File

@ -1,10 +0,0 @@
{
"title": "Sahana Eden",
"desc-cs": "Řízení humanítární činnosti",
"desc-en": "Řízení humanítární činnosti",
"lxcpath": "sahana",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["sahana-shared", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE sambro IMAGE sambro 0.0.1-190620
LAYER shared/alpine3.9 META title Sahana Eden - SAMBRO
LAYER shared/alpine3.9-python2.7 META desc-cs Řízení humanítární činnosti - Centrum hlášení a výstrah
LAYER shared/sahana META desc-en Management of humanitarian activities - Reporting and alerting center
LAYER sambro/sambro META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-python2.7 2.7.16-190620
LAYER sahana-shared 0.0.1-190620
MOUNT DIR /srv/sambro/conf srv/web2py/applications/eden/models MOUNT DIR /srv/sambro/conf srv/web2py/applications/eden/models
MOUNT DIR /srv/sambro/data/SAMBRO srv/web2py/applications/eden/modules/templates/SAMBRO MOUNT DIR /srv/sambro/data/SAMBRO srv/web2py/applications/eden/modules/templates/SAMBRO

View File

@ -1,10 +0,0 @@
{
"title": "Sahana Eden - SAMBRO",
"desc-cs": "Centrum hlášení a výstrah",
"desc-en": "Centrum hlášení a výstrah",
"lxcpath": "sambro",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["sahana-shared", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE seeddms IMAGE seeddms 5.1.9-190620
LAYER shared/alpine3.9 META title SeedDMS
LAYER shared/alpine3.9-php7.2 META desc-cs Archiv dokumentace
LAYER shared/alpine3.9-python3.6 META desc-en Document management system
LAYER seeddms/seeddms META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-php7.2 7.2.19-190620
LAYER alpine3.9-python3.6 3.6.8-190620
FIXLAYER /usr/bin/fix-apk FIXLAYER /usr/bin/fix-apk

View File

@ -1,10 +0,0 @@
{
"title": "SeedDMS",
"desc-cs": "Archiv dokumentace",
"desc-en": "Archiv dokumentace",
"lxcpath": "seeddms",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-php7.2", "alpine3.9-python3.6", "postgres"]
}

View File

@ -1,8 +1,14 @@
IMAGE sigmah IMAGE sigmah 2.0.2-190620
LAYER shared/alpine3.9 META title Sigmah
LAYER shared/alpine3.9-java8 META desc-cs Finanční řízení sbírek
LAYER shared/alpine3.9-tomcat8.5 META desc-en Donation management
LAYER sigmah/sigmah META type app
META license GPL
META depends postgres
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
LAYER alpine3.9-tomcat8.5 8.5.41-190620
RUN EOF RUN EOF
# Download Sigmah # Download Sigmah

View File

@ -1,10 +0,0 @@
{
"title": "Sigmah",
"desc-cs": "Finanční řízení sbírek",
"desc-en": "Finanční řízení sbírek",
"lxcpath": "sigmah",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-tomcat8.5", "postgres"]
}

View File

@ -1,7 +1,13 @@
IMAGE ushahidi IMAGE ushahidi 3.12.3-190620
LAYER shared/alpine3.9 META title Sigmah
LAYER shared/alpine3.9-php7.2 META desc-cs Skupinová reakce na události
LAYER ushahidi/ushahidi META desc-en Group reaction to events
META type app
META license GPL
META depends mariadb
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-php7.2 7.2.19-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

@ -1,10 +0,0 @@
{
"title": "Ushahidi",
"desc-cs": "Skupinová reakce na události",
"desc-en": "Skupinová reakce na události",
"lxcpath": "ushahidi",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-php7.2", "mariadb"]
}

View File

@ -1,7 +1,12 @@
IMAGE activemq IMAGE activemq 5.15.9-190620
LAYER shared/alpine3.9 META title ActiveMQ
LAYER shared/alpine3.9-java8 META desc-cs ActveMQ message broker
LAYER activemq/activemq META desc-en ActveMQ message broker
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
RUN EOF RUN EOF
# Download and install ActiveMQ # Download and install ActiveMQ

View File

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

View File

@ -1,6 +1,11 @@
IMAGE mariadb IMAGE mariadb 10.3.15-190620
LAYER shared/alpine3.9 META title MariaDB
LAYER mariadb/mariadb META desc-cs Relační databázový systém kompatibilní s MySQL
META desc-en MySQL-compatible relational database management system
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# Create OS user (which will be picked up later by apk add) # Create OS user (which will be picked up later by apk add)

View File

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

View File

@ -1,6 +1,11 @@
IMAGE postgres IMAGE postgres 11.3.0-190620
LAYER shared/alpine3.9 META title PostgreSQL
LAYER postgres/postgres META desc-cs Relační databázový systém s podporou pro geografické objekty
META desc-en Relational database management system with support for geographic objects
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# Modify OS user (which will be picked up later by apk add) # Modify OS user (which will be picked up later by apk add)

View File

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

View File

@ -1,6 +1,11 @@
IMAGE rabbitmq IMAGE rabbitmq 3.7.11-190620
LAYER shared/alpine3.9 META title RabbitMQ
LAYER rabbitmq/rabbitmq META desc-cs Multiprotokolový message broker
META desc-en Multi-protocol message broker
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# Create OS user (which will be picked up later by apk add) # Create OS user (which will be picked up later by apk add)

View File

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

View File

@ -1,6 +1,11 @@
IMAGE redis IMAGE redis 4.0.12-190620
LAYER shared/alpine3.9 META title Redis
LAYER redis/redis META desc-cs Pokročilá key-value databáze
META desc-en Advanced key-value store
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# Create OS user (which will be picked up later by apk add) # Create OS user (which will be picked up later by apk add)

View File

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

View File

@ -1,7 +1,12 @@
IMAGE solr IMAGE solr 6.5.1-190620
LAYER shared/alpine3.9 META title Solr
LAYER shared/alpine3.9-java8 META desc-cs Platforma pro fulltextové a fasetové vyhledávání
LAYER solr/solr META desc-en Fulltext and faceted search platform
META type service
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies

View File

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

View File

@ -1,6 +1,11 @@
IMAGE build IMAGE alpine3.8-nodejs8 8.14.0-190620
LAYER shared/alpine3.8 META title Alpine 3.8 Node.js 8
LAYER shared/alpine3.8-nodejs8 META desc-cs Základní LXC vrstva s běhovým prostředím pro Node.js 8
META desc-en Basic LXC layer with Node.js 8 runtime environment
META type layer
META license GPL
LAYER alpine3.8 3.8.4-190620
RUN EOF RUN EOF
apk --no-cache add nodejs apk --no-cache add nodejs

View File

@ -1,9 +0,0 @@
{
"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"]
}

View File

@ -1,6 +1,11 @@
IMAGE build IMAGE alpine3.8-php5.6 5.6.40-190620
LAYER shared/alpine3.8 META title Alpine 3.8 PHP 5.6
LAYER shared/alpine3.8-php5.6 META desc-cs Základní LXC vrstva s běhovým prostředím pro PHP 5.6
META desc-en Basic LXC layer with PHP 5.6 runtime environment
META type layer
META license GPL
LAYER alpine3.8 3.8.4-190620
RUN EOF RUN EOF
apk --no-cache add nginx php5 php5-ctype php5-fpm php5-gd php5-json php5-mcrypt php5-opcache apk --no-cache add nginx php5 php5-ctype php5-fpm php5-gd php5-json php5-mcrypt php5-opcache

View File

@ -1,9 +0,0 @@
{
"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,11 @@
IMAGE build IMAGE alpine3.8-ruby2.4 2.4.5-190620
LAYER shared/alpine3.8 META title Alpine 3.8 Ruby 2.4
LAYER shared/alpine3.8-ruby2.4 META desc-cs Základní LXC vrstva s běhovým prostředím pro Ruby 2.4
META desc-en Basic LXC layer with Ruby 2.4 runtime environment
META type layer
META license GPL
LAYER alpine3.8 3.8.4-190620
RUN EOF RUN EOF
# Install Ruby runtime dependencies # Install Ruby runtime dependencies

View File

@ -1,9 +0,0 @@
{
"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"]
}

View File

@ -1,5 +1,10 @@
IMAGE build IMAGE alpine3.8 3.8.4-190620
LAYER shared/alpine3.8 META title Alpine 3.8
META desc-cs Základní LXC vrstva s Alpine linuxem 3.8
META desc-en Basic LXC layer with Alpine linux 3.8
META type layer
META license GPL
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.8/x86_64/versions/library-3.8/x86_64/rootfs.tar.xz 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 RUN EOF

View File

@ -1,9 +0,0 @@
{
"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,11 @@
IMAGE build IMAGE alpine3.9-java8 8.212.04-190620
LAYER shared/alpine3.9 META title Alpine 3.9 OpenJDK 8
LAYER shared/alpine3.9-java8 META desc-cs Základní LXC vrstva s běhovým prostředím pro Javu 8
META desc-en Basic LXC layer with Java 8 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# nss needed due to https://github.com/docker-library/openjdk/issues/289 , https://bugs.alpinelinux.org/issues/10126 # nss needed due to https://github.com/docker-library/openjdk/issues/289 , https://bugs.alpinelinux.org/issues/10126

View File

@ -1,9 +0,0 @@
{
"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

@ -1,6 +1,11 @@
IMAGE build IMAGE alpine3.9-nodejs10 10.14.2-190620
LAYER shared/alpine3.9 META title Alpine 3.9 Node.js 10
LAYER shared/alpine3.9-nodejs10 META desc-cs Základní LXC vrstva s běhovým prostředím pro Node.js 10
META desc-en Basic LXC layer with Node.js 10 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
apk --no-cache add nodejs apk --no-cache add nodejs

View File

@ -1,9 +0,0 @@
{
"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,11 @@
IMAGE build IMAGE alpine3.9-php7.2 7.2.19-190620
LAYER shared/alpine3.9 META title Alpine 3.9 PHP 7.2
LAYER shared/alpine3.9-php7.2 META desc-cs Základní LXC vrstva s běhovým prostředím pro PHP 7.2
META desc-en Basic LXC layer with PHP 7.2 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
apk --no-cache add nginx php7 php7-ctype php7-fpm php7-gd php7-json php7-mbstring php7-mcrypt php7-opcache php7-session apk --no-cache add nginx php7 php7-ctype php7-fpm php7-gd php7-json php7-mbstring php7-mcrypt php7-opcache php7-session

View File

@ -1,9 +0,0 @@
{
"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

@ -1,6 +1,11 @@
IMAGE build IMAGE alpine3.9-python2.7 2.7.16-190620
LAYER shared/alpine3.9 META title Alpine 3.9 python 2.7
LAYER shared/alpine3.9-python2.7 META desc-cs Základní LXC vrstva s běhovým prostředím pro python 2.7
META desc-en Basic LXC layer with python 2.7 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
apk --no-cache add python2 apk --no-cache add python2

View File

@ -1,9 +0,0 @@
{
"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,6 +1,11 @@
IMAGE build IMAGE alpine3.9-python3.6 3.6.8-190620
LAYER shared/alpine3.9 META title Alpine 3.9 python 3.6
LAYER shared/alpine3.9-python3.6 META desc-cs Základní LXC vrstva s běhovým prostředím pro python 3.6
META desc-en Basic LXC layer with python 3.6 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
apk --no-cache add python3 apk --no-cache add python3

View File

@ -1,9 +0,0 @@
{
"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"]
}

View File

@ -1,6 +1,11 @@
IMAGE build IMAGE alpine3.9-ruby2.4 2.4.5-190620
LAYER shared/alpine3.9 META title Alpine 3.9 Ruby 2.4
LAYER shared/alpine3.9-ruby2.4 META desc-cs Základní LXC vrstva s běhovým prostředím pro Ruby 2.4
META desc-en Basic LXC layer with Ruby 2.4 runtime environment
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
RUN EOF RUN EOF
# Install Ruby runtime dependencies # Install Ruby runtime dependencies

View File

@ -1,9 +0,0 @@
{
"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,7 +1,12 @@
IMAGE build IMAGE alpine3.9-tomcat7 7.0.94-190620
LAYER shared/alpine3.9 META title Alpine 3.9 Tomcat 7
LAYER shared/alpine3.9-java8 META desc-cs Základní LXC vrstva s JSP a servlet kontejnerem Tomcat 7
LAYER shared/alpine3.9-tomcat7 META desc-en Basic LXC layer with Tomcat 7 JSP and servlet container
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
RUN EOF RUN EOF
# Install Tomcat 7 # Install Tomcat 7

View File

@ -1,9 +0,0 @@
{
"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-tomcat7",
"version": "0.0.1",
"release": "0",
"license": "GPL",
"depends": ["alpine3.9-java8"]
}

View File

@ -1,7 +1,12 @@
IMAGE build IMAGE alpine3.9-tomcat8.5 8.5.41-190620
LAYER shared/alpine3.9 META title Alpine 3.9 Tomcat 8.5
LAYER shared/alpine3.9-java8 META desc-cs Základní LXC vrstva s JSP a servlet kontejnerem Tomcat 8.5
LAYER shared/alpine3.9-tomcat8.5 META desc-en Basic LXC layer with Tomcat 8.5 JSP and servlet container
META type layer
META license GPL
LAYER alpine3.9 3.9.4-190620
LAYER alpine3.9-java8 8.212.04-190620
RUN EOF RUN EOF
# Install Tomcat 8.5 # Install Tomcat 8.5

View File

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

View File

@ -1,7 +1,11 @@
IMAGE build IMAGE alpine3.9 3.9.4-190620
LAYER shared/alpine3.9 META title Alpine 3.9
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.9/x86_64/versions/library-3.9/x86_64/rootfs.tar.xz META desc-cs Základní LXC vrstva s Alpine linuxem 3.9
META desc-en Basic LXC layer with Alpine linux 3.9
META type layer
META license GPL
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.9/x86_64/versions/library-3.9/x86_64/rootfs.tar.xz
COPY lxc COPY lxc
RUN EOF RUN EOF

View File

@ -1,9 +0,0 @@
{
"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": []
}