Introduce LXC-composer
This commit is contained in:
parent
ec7e843024
commit
9f1f247484
@ -1 +1 @@
|
||||
Subproject commit d9334fd12be8feb11106564d1a3b2e7526c89f43
|
||||
Subproject commit 972ca0b6967edd56af96a7de159950ac9fcbc4a6
|
79
apps/ckan/install.sh
Normal file
79
apps/ckan/install.sh
Normal file
@ -0,0 +1,79 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Create Postgres instance
|
||||
mkdir -p /srv/ckan/postgres_data
|
||||
chown -R 105432:105432 /srv/ckan/postgres_data
|
||||
chmod 700 /srv/ckan/postgres_data
|
||||
lxc-execute -n ckan_postgres -- initdb -D /var/lib/postgresql
|
||||
|
||||
# Configure Postgres
|
||||
cp postgres_data/postgresql.conf /srv/ckan/postgres_data/postgresql.conf
|
||||
cp postgres_data/pg_hba.conf /srv/ckan/postgres_data/pg_hba.conf
|
||||
|
||||
# Create database
|
||||
export CKAN_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_DS_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
lxc-start ckan_postgres #TODO: wait?
|
||||
envsubst <createdb.sql | lxc-attach -u 5432 -g 5432 ckan_postgres -- psql
|
||||
|
||||
# Configure Redis
|
||||
mkdir -p /srv/ckan/redis_conf /srv/ckan/redis_data
|
||||
cp redis_conf/redis.conf /srv/ckan/redis_conf/redis.conf
|
||||
chown -R 106379:106379 /srv/ckan/redis_data
|
||||
lxc-start ckan_redis
|
||||
|
||||
# Configure Solr
|
||||
mkdir -p /srv/ckan/solr_data
|
||||
lxc-execute ckan_solr -- cat /opt/solr/server/solr/solr.xml >/srv/ckan/solr_data/solr.xml
|
||||
chown -R 108983:108983 /srv/ckan/solr_data
|
||||
lxc-start ckan_solr # TODO: wait?
|
||||
|
||||
# Configure CKAN Solr core
|
||||
lxc-attach -u 8983 -g 8983 ckan_solr -- solr create -p 8983 -c ckan # TODO: wait to ensure creation?
|
||||
lxc-stop ckan_solr
|
||||
cp solr_data/ckan/conf/schema.xml /srv/ckan/solr_data/ckan/conf/schema.xml
|
||||
cp solr_data/ckan/conf/solrconfig.xml /srv/ckan/solr_data/ckan/conf/solrconfig.xml
|
||||
chown 108983:108983 /srv/ckan/solr_data/ckan/conf/schema.xml # TODO: je to potreba?
|
||||
lxc-start ckan_solr # TODO: wait?
|
||||
|
||||
# Configure CKAN DataPusher
|
||||
mkdir -p /srv/ckan/datapusher_conf /srv/ckan/datapusher_data
|
||||
cp datapusher_conf/datapusher.wsgi /srv/ckan/datapusher_conf/datapusher.wsgi
|
||||
cp datapusher_conf/datapusher_settings.py /srv/ckan/datapusher_conf/datapusher_settings.py
|
||||
chown -R 108080:108080 /srv/ckan/datapusher_data
|
||||
|
||||
# Configure CKAN
|
||||
mkdir -p /srv/ckan/ckan_conf /srv/ckan/ckan_data
|
||||
export CKAN_SECRET=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
envsubst <ckan_conf/ckan.ini >/srv/ckan/ckan_conf/ckan.ini
|
||||
cp ckan_conf/who.ini /srv/ckan/ckan_conf/who.ini
|
||||
chown -R 108080:108080 /srv/ckan/ckan_data
|
||||
|
||||
# Populate database
|
||||
lxc-execute ckan_ckan -- paster --plugin=ckan db init -c /etc/ckan/ckan.ini
|
||||
lxc-execute ckan_ckan -- paster --plugin=ckanext-spatial spatial initdb -c /etc/ckan/ckan.ini
|
||||
lxc-execute ckan_ckan -- paster --plugin=ckan datastore set-permissions -c /etc/ckan/ckan.ini | lxc-attach -u 5432 -g 5432 ckan_postgres -- psql
|
||||
|
||||
# Create admin account
|
||||
export CKAN_ADMIN_USER="admin"
|
||||
export CKAN_ADMIN_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
export CKAN_ADMIN_APIKEY=$(cat /proc/sys/kernel/random/uuid)
|
||||
export CKAN_ADMIN_PWD=$(head -c 12 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_ADMIN_HASH=$(lxc-execute ckan_ckan -- python -c "from passlib.hash import pbkdf2_sha512;print pbkdf2_sha512.encrypt('${CKAN_ADMIN_PWD}')")
|
||||
export CKAN_ADMIN_EMAIL="admin@example.com"
|
||||
envsubst <adminpwd.sql | lxc-attach -u 5432 -g 5432 ckan_postgres -- psql ckan
|
||||
|
||||
# Install config update script
|
||||
cp update-conf.sh /srv/ckan/update-conf.sh
|
||||
|
||||
# Stop services required for setup
|
||||
lxc-stop ckan_solr
|
||||
lxc-stop ckan_postgres
|
||||
lxc-stop ckan_redis
|
||||
|
||||
# Register application
|
||||
vmmgr register-app ckan ckan "${CKAN_ADMIN_USER}" "${CKAN_ADMIN_PWD}"
|
@ -177,7 +177,7 @@ dynamic_shared_memory_type = posix # the default is the first option
|
||||
|
||||
# - Settings -
|
||||
|
||||
#wal_level = replica # minimal, replica, or logical
|
||||
wal_level = minimal # minimal, replica, or logical
|
||||
# (change requires restart)
|
||||
#fsync = on # flush data to disk for crash safety
|
||||
# (turning this off can cause
|
||||
@ -232,12 +232,12 @@ dynamic_shared_memory_type = posix # the default is the first option
|
||||
|
||||
# Set these on the master and on any standby that will send replication data.
|
||||
|
||||
#max_wal_senders = 10 # max number of walsender processes
|
||||
max_wal_senders = 0 # max number of walsender processes
|
||||
# (change requires restart)
|
||||
#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
|
||||
#wal_sender_timeout = 60s # in milliseconds; 0 disables
|
||||
|
||||
#max_replication_slots = 10 # max number of replication slots
|
||||
max_replication_slots = 0 # max number of replication slots
|
||||
# (change requires restart)
|
||||
#track_commit_timestamp = off # collect timestamp of transaction commit
|
||||
# (change requires restart)
|
||||
@ -278,9 +278,9 @@ dynamic_shared_memory_type = posix # the default is the first option
|
||||
|
||||
# These settings are ignored on a publisher.
|
||||
|
||||
#max_logical_replication_workers = 4 # taken from max_worker_processes
|
||||
max_logical_replication_workers = 0 # taken from max_worker_processes
|
||||
# (change requires restart)
|
||||
#max_sync_workers_per_subscription = 2 # taken from max_logical_replication_workers
|
||||
max_sync_workers_per_subscription = 0 # taken from max_logical_replication_workers
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
@ -191,7 +191,7 @@ databases 16
|
||||
#
|
||||
# However it is possible to force the pre-4.0 behavior and always show a
|
||||
# ASCII art logo in startup logs by setting the following option to yes.
|
||||
always-show-logo yes
|
||||
always-show-logo no
|
||||
|
||||
################################ SNAPSHOTTING ################################
|
||||
#
|
53
apps/ckan/install/solr_data/solr.xml
Normal file
53
apps/ckan/install/solr_data/solr.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is an example of a simple "solr.xml" file for configuring one or
|
||||
more Solr Cores, as well as allowing Cores to be added, removed, and
|
||||
reloaded via HTTP requests.
|
||||
|
||||
More information about options available in this configuration file,
|
||||
and Solr Core administration can be found online:
|
||||
http://wiki.apache.org/solr/CoreAdmin
|
||||
-->
|
||||
|
||||
<solr>
|
||||
|
||||
<solrcloud>
|
||||
|
||||
<str name="host">${host:}</str>
|
||||
<int name="hostPort">${jetty.port:8983}</int>
|
||||
<str name="hostContext">${hostContext:solr}</str>
|
||||
|
||||
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
|
||||
|
||||
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
|
||||
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
|
||||
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
|
||||
<str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
|
||||
<str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
|
||||
|
||||
</solrcloud>
|
||||
|
||||
<shardHandlerFactory name="shardHandlerFactory"
|
||||
class="HttpShardHandlerFactory">
|
||||
<int name="socketTimeout">${socketTimeout:600000}</int>
|
||||
<int name="connTimeout">${connTimeout:60000}</int>
|
||||
</shardHandlerFactory>
|
||||
|
||||
</solr>
|
10
apps/ckan/install/update-conf.sh
Normal file
10
apps/ckan/install/update-conf.sh
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
HOST="${DOMAIN}"
|
||||
[ "${PORT}" != "443" ] && HOST="${DOMAIN}:${PORT}"
|
||||
sed -i "s|\(^ckan\.site_url = \).*|\1https://ckan.${HOST}|" /srv/ckan/ckan_conf/ckan.ini
|
||||
|
||||
sed -i "s|\(^smtp\.mail_from = \).*|\1${EMAIL}|" /srv/ckan/ckan_conf/ckan.ini
|
||||
sed -i "s|\(^ckanext\.geoview\.gapi_key = \).*|\1${GMAPS_API_KEY}|" /srv/ckan/ckan_conf/ckan.ini
|
||||
|
||||
sed -i "s|\(^FROM_EMAIL = \).*|\1'${EMAIL}'|" /srv/ckan/datapusher_conf/datapusher_settings.py
|
52
apps/ckan/meta
Normal file
52
apps/ckan/meta
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
'version': '1234',
|
||||
'meta': {
|
||||
'title': 'CKAN',
|
||||
'desc-cs': 'Datový sklad',
|
||||
'desc-en': 'Data store',
|
||||
'license': 'GPL'
|
||||
},
|
||||
'containers': {
|
||||
'ckan': {
|
||||
'image': 'ckan_123',
|
||||
'depends': [
|
||||
'ckan_datapusher',
|
||||
'ckan_redis',
|
||||
'ckan_solr',
|
||||
'ckan_postgres'
|
||||
],
|
||||
'mounts': {
|
||||
'/srv/ckan/ckan_conf': '/etc/ckan',
|
||||
'/srv/ckan/ckan_data': '/srv/ckan/storage'
|
||||
}
|
||||
},
|
||||
'ckan_datapusher': {
|
||||
'image': 'ckan-datapusher_123',
|
||||
'mounts': {
|
||||
'/etc/ssl/services.pem': '/etc/ssl/services.pem',
|
||||
'/srv/ckan/datapusher_conf': '/etc/ckan-datapusher',
|
||||
'/srv/ckan/datapusher_data': '/srv/ckan-datapusher/data'
|
||||
}
|
||||
},
|
||||
'ckan_redis': {
|
||||
'image': 'redis_123',
|
||||
'mounts': {
|
||||
'/srv/ckan/redis_conf/redis.conf': '/etc/redis.conf'
|
||||
'/srv/ckan/redis_data': '/var/lib/redis'
|
||||
}
|
||||
},
|
||||
'ckan_solr': {
|
||||
'image': 'solr_123',
|
||||
'mounts': {
|
||||
'/srv/ckan/solr_data': '/var/lib/solr'
|
||||
}
|
||||
},
|
||||
'ckan_postgres': {
|
||||
'image': 'postgis_123',
|
||||
'mounts': {
|
||||
'/srv/ckan/postgres_data': '/var/lib/postgresql'
|
||||
}
|
||||
}
|
||||
},
|
||||
'proxy': 'ckan'
|
||||
}
|
0
lxc-apps/ckan/uninstall.sh → apps/ckan/uninstall.sh
Executable file → Normal file
0
lxc-apps/ckan/uninstall.sh → apps/ckan/uninstall.sh
Executable file → Normal file
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
from lxcbuild.lxcimage import LXCImage
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -4,58 +4,25 @@ import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from vmmgr import lxcmgr
|
||||
|
||||
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):
|
||||
try:
|
||||
self.image.conf['build'] = True
|
||||
self.process_file()
|
||||
except FileExistsError as e:
|
||||
print(e)
|
||||
del self.image.conf['build']
|
||||
|
||||
def process_file(self):
|
||||
with open(self.image.lxcfile, 'r') as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
@ -73,18 +40,14 @@ class LXCBuilder:
|
||||
self.script = []
|
||||
self.script_eof = args
|
||||
elif 'IMAGE' == directive:
|
||||
self.set_name(*args.split())
|
||||
elif 'META' == directive:
|
||||
self.add_meta(*args.split(None, 1))
|
||||
self.set_name(args)
|
||||
elif 'LAYER' == directive:
|
||||
self.add_layer(*args.split())
|
||||
self.add_layer(args)
|
||||
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:
|
||||
@ -95,102 +58,65 @@ class LXCBuilder:
|
||||
self.set_cwd(args)
|
||||
elif 'HALT' == directive:
|
||||
self.set_halt(args)
|
||||
elif 'READY' == directive:
|
||||
self.set_ready(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')
|
||||
lxcmgr.register_container(self.image.name, self.image.conf)
|
||||
sh = os.path.join(self.get_layer_path(self.image.name), '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.chown(sh, 100000, 100000)
|
||||
subprocess.run(['lxc-execute', self.image.name, '--', '/bin/sh', '-lc', '/run.sh'], check=True)
|
||||
os.unlink(sh)
|
||||
lxcmgr.unregister_container(self.image.name)
|
||||
|
||||
def set_name(self, name, version):
|
||||
def set_name(self, name):
|
||||
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()
|
||||
self.image.conf['layers'] = [self.image.name]
|
||||
image_path = self.get_layer_path(self.image.name)
|
||||
os.makedirs(image_path, 0o755, True)
|
||||
os.chown(image_path, 100000, 100000)
|
||||
|
||||
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 add_layer(self, name):
|
||||
self.image.conf['layers'].insert(0, name)
|
||||
|
||||
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))
|
||||
layers = [self.get_layer_path(layer) for layer in self.image.conf['layers']]
|
||||
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)
|
||||
dst = os.path.join(self.get_layer_path(self.image.name), 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()
|
||||
copy_tree(os.path.join(self.build_dir, src), dst)
|
||||
shift_uid(dst)
|
||||
|
||||
def add_env(self, args):
|
||||
self.image.env.append(args)
|
||||
if not self.already_built:
|
||||
self.rebuild_config()
|
||||
if 'env' not in self.image.conf:
|
||||
self.image.conf['env'] = []
|
||||
self.image.conf['env'].append(args)
|
||||
|
||||
def set_user(self, uid, gid):
|
||||
self.image.uid = uid
|
||||
self.image.gid = gid
|
||||
if not self.already_built:
|
||||
self.rebuild_config()
|
||||
self.image.conf['uid'] = uid
|
||||
self.image.conf['gid'] = gid
|
||||
|
||||
def set_cmd(self, cmd):
|
||||
self.image.cmd = cmd
|
||||
self.image.conf['cmd'] = cmd
|
||||
|
||||
def set_cwd(self, cwd):
|
||||
self.image.cwd = cwd
|
||||
if not self.already_built:
|
||||
self.rebuild_config()
|
||||
self.image.conf['cwd'] = cwd
|
||||
|
||||
def set_halt(self, halt):
|
||||
self.image.halt = halt
|
||||
if not self.already_built:
|
||||
self.rebuild_config()
|
||||
self.image.conf['halt'] = halt
|
||||
|
||||
def set_ready(self, cmd):
|
||||
self.image.conf['ready'] = cmd
|
||||
|
||||
def unpack_http_archive(src, dst):
|
||||
xf = 'xzf'
|
||||
@ -211,3 +137,26 @@ def copy_tree(src, dst):
|
||||
for name in os.listdir(src):
|
||||
copy_tree(os.path.join(src, name), os.path.join(dst, name))
|
||||
shutil.copystat(src, dst)
|
||||
|
||||
def shift_uid(dir):
|
||||
shift_uid_entry(dir, os.stat(dir, follow_symlinks=True))
|
||||
shift_uid_recursively(dir)
|
||||
|
||||
def shift_uid_recursively(dir):
|
||||
for entry in os.scandir(dir):
|
||||
shift_uid_entry(entry.path, entry.stat(follow_symlinks=False))
|
||||
if entry.is_dir():
|
||||
shift_uid_recursively(entry.path)
|
||||
|
||||
def shift_uid_entry(path, stat):
|
||||
uid = stat.st_uid
|
||||
gid = stat.st_gid
|
||||
do_chown = False
|
||||
if uid < 100000:
|
||||
uid = uid + 100000
|
||||
do_chown = True
|
||||
if gid < 100000:
|
||||
gid = gid + 100000
|
||||
do_chown = True
|
||||
if do_chown:
|
||||
os.lchown(path, uid, gid)
|
||||
|
@ -8,17 +8,7 @@ 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
|
||||
self.conf = {}
|
||||
|
||||
if os.path.isfile(build_path):
|
||||
self.lxcfile = os.path.realpath(build_path)
|
||||
|
@ -23,7 +23,7 @@ class LXCPacker:
|
||||
|
||||
def pack(self):
|
||||
# Prepare package file names
|
||||
self.tar_path = os.path.join(PKG_ROOT, '{}.tar'.format(self.image.upper_layer))
|
||||
self.tar_path = os.path.join(PKG_ROOT, '{}.tar'.format(self.image.name))
|
||||
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))
|
||||
@ -35,36 +35,30 @@ class LXCPacker:
|
||||
|
||||
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='/')
|
||||
print('Archiving', self.image.name)
|
||||
subprocess.run(['tar', '--xattrs', '-cpf', self.tar_path, os.path.join(LXC_STORAGE, self.image.name)], cwd='/')
|
||||
# Add install/upgrade/uninstall scripts
|
||||
# TODO: skripty balit jen s aplikacemi, ne s imagi
|
||||
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)
|
||||
subprocess.run(['tar', '--transform', 's|^|srv/{}/|'.format(self.image.name), '-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)
|
||||
else:
|
||||
packages = {'apps': {}, 'images': {}}
|
||||
packages['images'][self.image.name] = self.image.conf.copy()
|
||||
packages['images'][self.image.name]['size'] = os.path.getsize(self.xz_path)
|
||||
packages['images'][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)
|
||||
|
||||
|
@ -1,17 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Configure CKAN DataPusher
|
||||
mkdir -p /srv/ckan-datapusher/conf /srv/ckan-datapusher/data
|
||||
cp srv/ckan-datapusher/conf/datapusher.wsgi /srv/ckan-datapusher/conf/datapusher.wsgi
|
||||
cp srv/ckan-datapusher/conf/datapusher_settings.py /srv/ckan-datapusher/conf/datapusher_settings.py
|
||||
chown -R 8004:8004 /srv/ckan-datapusher/data
|
||||
|
||||
# Install service
|
||||
cp etc/init.d/ckan-datapusher /etc/init.d/ckan-datapusher
|
||||
rc-update -u
|
||||
|
||||
# Install config update script
|
||||
cp srv/ckan-datapusher/update-conf.sh /srv/ckan-datapusher/update-conf.sh
|
@ -1,11 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="CKAN DataPusher container"
|
||||
|
||||
start() {
|
||||
lxc-start ckan-datapusher
|
||||
}
|
||||
|
||||
stop() {
|
||||
lxc-stop ckan-datapusher
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
sed -i "s|\(^FROM_EMAIL = \).*|\1'${EMAIL}'|" /srv/ckan-datapusher/conf/datapusher_settings.py
|
@ -1,12 +1,7 @@
|
||||
IMAGE ckan-datapusher 0.0.13-190620
|
||||
META title CKAN DataPusher
|
||||
META desc-cs Služba datového skladu pro extrakci dat
|
||||
META desc-en Data store data extraction service
|
||||
META type app
|
||||
META license GPL
|
||||
IMAGE ckan-datapusher_0.0.13-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-python2.7_2.7.16-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
@ -26,8 +21,8 @@ RUN EOF
|
||||
pip install -r /srv/ckan-datapusher/src/datapusher/requirements.txt
|
||||
|
||||
# Create OS user
|
||||
addgroup -S -g 8004 ckandp
|
||||
adduser -S -u 8004 -h /srv/ckan-datapusher -s /bin/false -g ckandp -G ckandp ckandp
|
||||
addgroup -S -g 8080 ckandp
|
||||
adduser -S -u 8080 -h /srv/ckan-datapusher -s /bin/false -g ckandp -G ckandp ckandp
|
||||
chown -R ckandp:ckandp /srv/ckan-datapusher
|
||||
|
||||
# Cleanup
|
||||
@ -38,8 +33,4 @@ EOF
|
||||
|
||||
COPY lxc
|
||||
|
||||
MOUNT FILE /etc/ssl/services.pem etc/ssl/services.pem
|
||||
MOUNT DIR /srv/ckan-datapusher/conf etc/ckan-datapusher
|
||||
MOUNT DIR /srv/ckan-datapusher/data srv/ckan-datapusher/data
|
||||
|
||||
CMD execlineb -P /run
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
# Remove service
|
||||
rm -f /etc/init.d/ckan-datapusher
|
||||
rc-update -u
|
@ -1,66 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Check prerequisites
|
||||
[ ! -e /run/openrc/started/postgres ] && service postgres start && STOP_POSTGRES=1
|
||||
[ ! -e /run/openrc/started/redis ] && service redis start && STOP_REDIS=1
|
||||
[ ! -e /run/openrc/started/solr ] && service solr start && STOP_SOLR=1
|
||||
|
||||
# Create database
|
||||
export CKAN_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_DS_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
envsubst <createdb.sql | lxc-attach -u 5432 -g 5432 postgres -- psql
|
||||
|
||||
# Configure CKAN Solr core
|
||||
lxc-attach -u 8983 -g 8983 solr -- solr create -p 8983 -c ckan
|
||||
cp srv/solr/data/ckan/conf/schema.xml /srv/solr/data/ckan/conf/schema.xml
|
||||
cp srv/solr/data/ckan/conf/solrconfig.xml /srv/solr/data/ckan/conf/solrconfig.xml
|
||||
chown 8983:8983 /srv/solr/data/ckan/conf/schema.xml
|
||||
service solr restart
|
||||
|
||||
# Configure CKAN
|
||||
mkdir -p /srv/ckan/conf /srv/ckan/data
|
||||
export CKAN_SECRET=$(head -c 18 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
envsubst <srv/ckan/conf/ckan.ini >/srv/ckan/conf/ckan.ini
|
||||
cp srv/ckan/conf/who.ini /srv/ckan/conf/who.ini
|
||||
chown -R 8003:8003 /srv/ckan/data
|
||||
|
||||
# Set "production values" (increases performance) only if the DEBUG environment variable is not set
|
||||
if [ ${DEBUG:-0} -eq 0 ]; then
|
||||
sed -i 's/debug = true/debug = false/' /srv/ckan/conf/ckan.ini
|
||||
fi
|
||||
|
||||
# Populate database
|
||||
lxc-execute ckan -- paster --plugin=ckan db init -c /etc/ckan/ckan.ini
|
||||
lxc-execute ckan -- paster --plugin=ckanext-spatial spatial initdb -c /etc/ckan/ckan.ini
|
||||
lxc-execute ckan -- paster --plugin=ckan datastore set-permissions -c /etc/ckan/ckan.ini | lxc-attach -u 5432 -g 5432 postgres -- psql
|
||||
|
||||
# Create admin account
|
||||
export CKAN_ADMIN_USER="admin"
|
||||
export CKAN_ADMIN_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
export CKAN_ADMIN_APIKEY=$(cat /proc/sys/kernel/random/uuid)
|
||||
export CKAN_ADMIN_PWD=$(head -c 12 /dev/urandom | base64 | tr -d '+/=')
|
||||
export CKAN_ADMIN_HASH=$(lxc-execute ckan -- python -c "from passlib.hash import pbkdf2_sha512;print pbkdf2_sha512.encrypt('${CKAN_ADMIN_PWD}')")
|
||||
export CKAN_ADMIN_EMAIL="admin@example.com"
|
||||
envsubst <adminpwd.sql | lxc-attach -u 5432 -g 5432 postgres -- psql ckan
|
||||
|
||||
# Install cron job
|
||||
cp etc/periodic/hourly/ckan /etc/periodic/hourly/ckan
|
||||
|
||||
# Install service
|
||||
cp etc/init.d/ckan /etc/init.d/ckan
|
||||
rc-update -u
|
||||
|
||||
# Install config update script
|
||||
cp srv/ckan/update-conf.sh /srv/ckan/update-conf.sh
|
||||
|
||||
# Stop services required for setup
|
||||
[ ! -z ${STOP_POSTGRES} ] && service postgres stop
|
||||
[ ! -z ${STOP_REDIS} ] && service redis stop
|
||||
[ ! -z ${STOP_SOLR} ] && service solr stop
|
||||
|
||||
# Register application
|
||||
vmmgr register-app ckan ckan "${CKAN_ADMIN_USER}" "${CKAN_ADMIN_PWD}"
|
@ -1,23 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="CKAN container"
|
||||
|
||||
depend() {
|
||||
need ckan-datapusher postgres redis solr
|
||||
}
|
||||
|
||||
start() {
|
||||
lxc-start ckan
|
||||
}
|
||||
|
||||
start_post() {
|
||||
vmmgr register-proxy ckan
|
||||
}
|
||||
|
||||
stop_pre() {
|
||||
vmmgr unregister-proxy ckan
|
||||
}
|
||||
|
||||
stop() {
|
||||
lxc-stop ckan
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -e /run/openrc/started/ckan ]; then
|
||||
lxc-attach -u 8003 -g 8003 ckan -- paster --plugin=ckan tracking update -c /etc/ckan/ckan.ini >/dev/null
|
||||
lxc-attach -u 8003 -g 8003 ckan -- paster --plugin=ckan search-index rebuild -r -c /etc/ckan/ckan.ini >/dev/null
|
||||
fi
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
HOST="${DOMAIN}"
|
||||
[ "${PORT}" != "443" ] && HOST="${DOMAIN}:${PORT}"
|
||||
sed -i "s|\(^ckan\.site_url = \).*|\1https://ckan.${HOST}|" /srv/ckan/conf/ckan.ini
|
||||
|
||||
sed -i "s|\(^smtp\.mail_from = \).*|\1${EMAIL}|" /srv/ckan/conf/ckan.ini
|
||||
sed -i "s|\(^ckanext\.geoview\.gapi_key = \).*|\1${GMAPS_API_KEY}|" /srv/ckan/conf/ckan.ini
|
2
lxc-apps/ckan/lxc/etc/crontabs/ckan
Normal file
2
lxc-apps/ckan/lxc/etc/crontabs/ckan
Normal file
@ -0,0 +1,2 @@
|
||||
0 * * * * paster --plugin=ckan tracking update -c /etc/ckan/ckan.ini >/dev/null
|
||||
0 * * * * paster --plugin=ckan search-index rebuild -r -c /etc/ckan/ckan.ini >/dev/null
|
4
lxc-apps/ckan/lxc/etc/services.d/.s6-svscan/finish
Normal file
4
lxc-apps/ckan/lxc/etc/services.d/.s6-svscan/finish
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/execlineb -P
|
||||
|
||||
foreground { s6-svwait -d -t 3000 ckan }
|
||||
foreground { s6-svwait -d -t 3000 cron }
|
5
lxc-apps/ckan/lxc/etc/services.d/ckan/run
Normal file
5
lxc-apps/ckan/lxc/etc/services.d/ckan/run
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/execlineb -P
|
||||
|
||||
fdmove -c 2 1
|
||||
s6-setuidgid ckan
|
||||
paster serve /etc/ckan/ckan.ini
|
4
lxc-apps/ckan/lxc/etc/services.d/cron/run
Normal file
4
lxc-apps/ckan/lxc/etc/services.d/cron/run
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/execlineb -P
|
||||
|
||||
fdmove -c 2 1
|
||||
crond -f -d 8
|
@ -1,13 +1,7 @@
|
||||
IMAGE ckan 2.8.2-190620
|
||||
META title CKAN
|
||||
META desc-cs Datový sklad
|
||||
META desc-en Data store
|
||||
META type app
|
||||
META license GPL
|
||||
META depends ckan-datapusher postgres redis solr
|
||||
IMAGE ckan_2.8.2-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-python2.7_2.7.16-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
@ -40,8 +34,8 @@ RUN EOF
|
||||
pip install -r /srv/ckan/src/ckanext-dgvat-xls/requirements.txt
|
||||
|
||||
# Create OS user
|
||||
addgroup -S -g 8003 ckan
|
||||
adduser -S -u 8003 -h /srv/ckan -s /bin/false -g ckan -G ckan ckan
|
||||
addgroup -S -g 8080 ckan
|
||||
adduser -S -u 8080 -h /srv/ckan -s /bin/false -g ckan -G ckan ckan
|
||||
chown -R ckan:ckan /srv/ckan
|
||||
|
||||
# Cleanup
|
||||
@ -50,8 +44,6 @@ RUN EOF
|
||||
rm -rf /root/.cache
|
||||
EOF
|
||||
|
||||
MOUNT DIR /srv/ckan/conf etc/ckan
|
||||
MOUNT DIR /srv/ckan/data srv/ckan/storage
|
||||
COPY lxc
|
||||
|
||||
USER 8003 8003
|
||||
CMD paster serve /etc/ckan/ckan.ini
|
||||
CMD s6-svscan /etc/services.d
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE crisiscleanup 2.2.0-190620
|
||||
META title Crisis Cleanup
|
||||
META desc-cs Mapování následků katastrof
|
||||
META desc-en Disaster relief mapping
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE crisiscleanup_2.2.0-190620
|
||||
|
||||
LAYER alpine3.8 3.8.4-190620
|
||||
LAYER alpine3.8-ruby2.4 2.4.5-190620
|
||||
LAYER alpine3.8-nodejs8 8.14.0-190620
|
||||
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
|
||||
|
||||
|
@ -1,13 +1,7 @@
|
||||
IMAGE cts 0.8.0-190620
|
||||
META title CTS
|
||||
META desc-cs Sledovací systém komodit
|
||||
META desc-en Commodity tracking system
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE cts_0.8.0-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-python2.7_2.7.16-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,13 +1,7 @@
|
||||
IMAGE ecogis 0.0.1-190620
|
||||
META title EcoGIS
|
||||
META desc-cs EcoGIS
|
||||
META desc-en EcoGIS
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE ecogis_0.0.1-190620
|
||||
|
||||
LAYER alpine3.8 3.8.4-190620
|
||||
LAYER alpine3.8-php5.6 5.6.40-190620
|
||||
LAYER alpine3.8_3.8.4-190620
|
||||
LAYER alpine3.8-php5.6_5.6.40-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,12 +1,7 @@
|
||||
IMAGE frontlinesms 2.6.5-190620
|
||||
META title FrontlineSMS
|
||||
META desc-cs Hromadné odesílání zpráv
|
||||
META desc-en Bulk SMS messaging
|
||||
META type app
|
||||
META license GPL
|
||||
IMAGE frontlinesms_2.6.5-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-java8_8.212.04-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE gnuhealth 3.4.1-190620
|
||||
META title GNU Health
|
||||
META desc-cs Administrace lékařských záznamů
|
||||
META desc-en Medical records administration
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE gnuhealth_3.4.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python3.6 3.6.8-190620
|
||||
LAYER alpine3.9-nodejs10 10.14.2-190620
|
||||
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
|
||||
|
||||
|
@ -1,13 +1,7 @@
|
||||
IMAGE kanboard 1.2.9-190620
|
||||
META title KanBoard
|
||||
META desc-cs Kanban řízení projektů
|
||||
META desc-en Kanban project management
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE kanboard_1.2.9-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-php7.2 7.2.19-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-php7.2_7.2.19-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE mifosx 18.03.01-190620
|
||||
META title Mifos X
|
||||
META desc-cs Mikrofinancování rozvojových projektů
|
||||
META desc-en Development projects microfinancing
|
||||
META type app
|
||||
META license GPL
|
||||
META depends mariadb
|
||||
IMAGE mifosx_18.03.01-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9-tomcat8.5 8.5.41-190620
|
||||
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
|
||||
# Install full-featured wget to work around sourceforge bugs
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE motech 1.3.0-190620
|
||||
META title Motech
|
||||
META desc-cs Automatizace komunikace
|
||||
META desc-en Communication automation
|
||||
META type app
|
||||
META license GPL
|
||||
META depends activemq postgres
|
||||
IMAGE motech_1.3.0-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9-tomcat7 7.0.94-190620
|
||||
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
|
||||
# Download Motech
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE odoo 12.0.0-190620
|
||||
META title Odoo
|
||||
META desc-cs Sada aplikací pro správu organizace
|
||||
META desc-en Company management application suite
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE odoo_12.0.0-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python3.6 3.6.8-190620
|
||||
LAYER alpine3.9-nodejs10 10.14.2-190620
|
||||
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
|
||||
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE opendatakit-build 0.3.5-190620
|
||||
META title OpenDataKit Build
|
||||
META desc-cs Sběr formulářových dat - návrh formulářů
|
||||
META desc-en Form data collection - Form designer
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE opendatakit-build_0.3.5-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-ruby2.4 2.4.5-190620
|
||||
LAYER alpine3.9-nodejs10 10.14.2-190620
|
||||
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
|
||||
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE opendatakit 2.0.3-190620
|
||||
META title OpenDataKit
|
||||
META desc-cs Sběr formulářových dat
|
||||
META desc-en Form data collection
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE opendatakit_2.0.3-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9-tomcat8.5 8.5.41-190620
|
||||
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
|
||||
# Download OpenDataKit
|
||||
|
@ -1,14 +1,9 @@
|
||||
IMAGE openmapkit 0.12.0-190620
|
||||
META title OpenMapKit
|
||||
META desc-cs Sběr mapových dat
|
||||
META desc-en Map data collection
|
||||
META type app
|
||||
META license GPL
|
||||
IMAGE openmapkit_0.12.0-190620
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
@ -1,13 +1,7 @@
|
||||
IMAGE pandora 0.0.1-190620
|
||||
META title Pan.do/ra
|
||||
META desc-cs Archiv medií
|
||||
META desc-en Media archive
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres rabbitmq
|
||||
IMAGE pandora_0.0.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python3.6 3.6.8-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-python3.6_3.6.8-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE sahana-demo 0.0.1-190620
|
||||
META title Sahana Eden - Demo
|
||||
META desc-cs Řízení humanítární činnosti - Demo instance
|
||||
META desc-en Management of humanitarian activities - Demo instance
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE sahana-demo_0.0.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER sahana-shared 0.0.1-190620
|
||||
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/data/default srv/web2py/applications/eden/modules/templates/default
|
||||
|
@ -1,12 +1,7 @@
|
||||
IMAGE sahana-shared 0.0.1-190620
|
||||
META title Sahana Eden - Shared layer
|
||||
META desc-cs Řízení humanítární činnosti - sdílená vrstva
|
||||
META desc-en Management of humanitarian activities - shared layer
|
||||
META type layer
|
||||
META license GPL
|
||||
IMAGE sahana-shared_0.0.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-python2.7_2.7.16-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE sahana 0.0.1-190620
|
||||
META title Sahana Eden
|
||||
META desc-cs Řízení humanítární činnosti
|
||||
META desc-en Management of humanitarian activities
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE sahana_0.0.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER sahana-shared 0.0.1-190620
|
||||
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/data/Spotter srv/web2py/applications/eden/modules/templates/Spotter
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE sambro 0.0.1-190620
|
||||
META title Sahana Eden - SAMBRO
|
||||
META desc-cs Řízení humanítární činnosti - Centrum hlášení a výstrah
|
||||
META desc-en Management of humanitarian activities - Reporting and alerting center
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE sambro_0.0.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-python2.7 2.7.16-190620
|
||||
LAYER sahana-shared 0.0.1-190620
|
||||
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/data/SAMBRO srv/web2py/applications/eden/modules/templates/SAMBRO
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE seeddms 5.1.9-190620
|
||||
META title SeedDMS
|
||||
META desc-cs Archiv dokumentace
|
||||
META desc-en Document management system
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE seeddms_5.1.9-190620
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
@ -1,14 +1,8 @@
|
||||
IMAGE sigmah 2.0.2-190620
|
||||
META title Sigmah
|
||||
META desc-cs Finanční řízení sbírek
|
||||
META desc-en Donation management
|
||||
META type app
|
||||
META license GPL
|
||||
META depends postgres
|
||||
IMAGE sigmah_2.0.2-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9-tomcat8.5 8.5.41-190620
|
||||
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
|
||||
# Download Sigmah
|
||||
|
@ -1,13 +1,7 @@
|
||||
IMAGE ushahidi 3.12.3-190620
|
||||
META title Sigmah
|
||||
META desc-cs Skupinová reakce na události
|
||||
META desc-en Group reaction to events
|
||||
META type app
|
||||
META license GPL
|
||||
META depends mariadb
|
||||
IMAGE ushahidi_3.12.3-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-php7.2 7.2.19-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-php7.2_7.2.19-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
|
@ -1,12 +1,7 @@
|
||||
IMAGE activemq 5.15.9-190620
|
||||
META title ActiveMQ
|
||||
META desc-cs ActveMQ message broker
|
||||
META desc-en ActveMQ message broker
|
||||
META type service
|
||||
META license GPL
|
||||
IMAGE activemq_5.15.9-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-java8_8.212.04-190620
|
||||
|
||||
RUN EOF
|
||||
# Download and install ActiveMQ
|
||||
|
@ -1,11 +1,6 @@
|
||||
IMAGE mariadb 10.3.15-190620
|
||||
META title 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
|
||||
IMAGE mariadb_10.3.15-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Create OS user (which will be picked up later by apk add)
|
||||
@ -25,4 +20,5 @@ MOUNT DIR /srv/mariadb/data var/lib/mysql
|
||||
|
||||
USER 3306 3306
|
||||
CMD mysqld
|
||||
READY test -e /run/mysqld/mysqld.sock
|
||||
HALT SIGTERM
|
||||
|
13
lxc-services/postgis/lxcfile
Normal file
13
lxc-services/postgis/lxcfile
Normal file
@ -0,0 +1,13 @@
|
||||
IMAGE postgis_11.3.0-190620
|
||||
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER postgres_11.3.0-190620
|
||||
|
||||
RUN EOF
|
||||
# Install PostGIS
|
||||
apk --no-cache add postgis@vm
|
||||
EOF
|
||||
|
||||
USER 5432 5432
|
||||
CMD postgres -D /var/lib/postgresql
|
||||
READY pg_isready
|
@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Create Postgres instance
|
||||
mkdir -p /srv/postgres/data
|
||||
chown -R 5432:5432 /srv/postgres/data
|
||||
chmod 700 /srv/postgres/data
|
||||
lxc-execute -n postgres -- initdb -D /var/lib/postgresql
|
||||
|
||||
# Configure Postgres
|
||||
cp srv/postgres/data/postgresql.conf /srv/postgres/data/postgresql.conf
|
||||
cp srv/postgres/data/pg_hba.conf /srv/postgres/data/pg_hba.conf
|
||||
|
||||
# Enable query logging. Only if the DEBUG environment variable is set
|
||||
if [ ${DEBUG:-0} -eq 1 ]; then
|
||||
sed -i 's/^#log_destination/log_destination/' /srv/postgres/data/postgresql.conf
|
||||
sed -i 's/^#log_statement/log_statement/' /srv/postgres/data/postgresql.conf
|
||||
fi
|
||||
|
||||
# Install service
|
||||
cp etc/init.d/postgres /etc/init.d/postgres
|
||||
rc-update -u
|
@ -1,15 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="Postgres container"
|
||||
|
||||
start() {
|
||||
lxc-start postgres
|
||||
}
|
||||
|
||||
start_post() {
|
||||
timeout -t 60 sh -c 'until lxc-attach postgres -- pg_isready >/dev/null 2>&1; do usleep 50000; done'
|
||||
}
|
||||
|
||||
stop() {
|
||||
lxc-stop postgres
|
||||
}
|
@ -1,26 +1,20 @@
|
||||
IMAGE postgres 11.3.0-190620
|
||||
META title PostgreSQL
|
||||
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
|
||||
IMAGE postgres_11.3.0-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Modify OS user (which will be picked up later by apk add)
|
||||
sed -i 's/postgres:x:70:70/postgres:x:5432:5432/' /etc/passwd
|
||||
sed -i 's/postgres:x:70/postgres:x:5432/' /etc/group
|
||||
|
||||
# Install PostgreSQL + PostGIS
|
||||
apk --no-cache add postgresql postgresql-contrib postgis@vm
|
||||
# Install PostgreSQL
|
||||
apk --no-cache add postgresql postgresql-contrib
|
||||
|
||||
# Create socket directory
|
||||
mkdir /run/postgresql
|
||||
chown postgres:postgres /run/postgresql
|
||||
EOF
|
||||
|
||||
MOUNT DIR /srv/postgres/data var/lib/postgresql
|
||||
|
||||
USER 5432 5432
|
||||
CMD postgres -D /var/lib/postgresql
|
||||
CMD postgres -D /etc/postgresql
|
||||
READY pg_isready
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
# Remove service
|
||||
rm -f /etc/init.d/postgres
|
||||
rc-update -u
|
@ -1,11 +1,6 @@
|
||||
IMAGE rabbitmq 3.7.11-190620
|
||||
META title RabbitMQ
|
||||
META desc-cs Multiprotokolový message broker
|
||||
META desc-en Multi-protocol message broker
|
||||
META type service
|
||||
META license GPL
|
||||
IMAGE rabbitmq_3.7.11-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Create OS user (which will be picked up later by apk add)
|
||||
@ -21,3 +16,4 @@ MOUNT DIR /srv/rabbitmq/data var/lib/rabbitmq/mnesia
|
||||
USER 5672 5672
|
||||
ENV HOME /usr/lib/rabbitmq
|
||||
CMD rabbitmq-server
|
||||
READY grep -q "Server startup complete" /var/log/rabbitmq/rabbit@*.log
|
||||
|
@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Configure Redis
|
||||
mkdir -p /srv/redis/conf /srv/redis/data
|
||||
cp srv/redis/conf/redis.conf /srv/redis/conf/redis.conf
|
||||
chown -R 6379:6379 /srv/redis/data
|
||||
|
||||
# Install service
|
||||
cp etc/init.d/redis /etc/init.d/redis
|
||||
rc-update -u
|
@ -1,11 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="Redis container"
|
||||
|
||||
start() {
|
||||
lxc-start redis
|
||||
}
|
||||
|
||||
stop() {
|
||||
lxc-stop redis
|
||||
}
|
@ -1,11 +1,6 @@
|
||||
IMAGE redis 4.0.12-190620
|
||||
META title Redis
|
||||
META desc-cs Pokročilá key-value databáze
|
||||
META desc-en Advanced key-value store
|
||||
META type service
|
||||
META license GPL
|
||||
IMAGE redis_4.0.12-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Create OS user (which will be picked up later by apk add)
|
||||
@ -16,8 +11,5 @@ RUN EOF
|
||||
apk --no-cache add redis
|
||||
EOF
|
||||
|
||||
MOUNT FILE /srv/redis/conf/redis.conf etc/redis.conf
|
||||
MOUNT DIR /srv/redis/data var/lib/redis
|
||||
|
||||
USER 6379 6379
|
||||
CMD redis-server /etc/redis.conf
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
# Remove service
|
||||
rm -f /etc/init.d/redis
|
||||
rc-update -u
|
@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
cd $(realpath $(dirname "${0}"))/install
|
||||
|
||||
# Configure Solr
|
||||
mkdir -p /srv/solr/data
|
||||
cp /var/lib/lxc/solr/solr/opt/solr/server/solr/solr.xml /srv/solr/data/solr.xml
|
||||
chown -R 8983:8983 /srv/solr/data
|
||||
|
||||
# Install service
|
||||
cp etc/init.d/solr /etc/init.d/solr
|
||||
rc-update -u
|
@ -1,11 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="Solr container"
|
||||
|
||||
start() {
|
||||
lxc-start solr
|
||||
}
|
||||
|
||||
stop() {
|
||||
lxc-stop solr
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ev
|
||||
|
||||
# Remove service
|
||||
rm -f /etc/init.d/solr
|
||||
rc-update -u
|
@ -1,3 +1,3 @@
|
||||
SOLR_JAVA_MEM="-Xms32m -Xmx256m"
|
||||
SOLR_JAVA_MEM="-Xms32m -Xmx1024m"
|
||||
SOLR_HOME=/var/lib/solr
|
||||
SOLR_PORT=8983
|
@ -1,12 +1,7 @@
|
||||
IMAGE solr 6.5.1-190620
|
||||
META title Solr
|
||||
META desc-cs Platforma pro fulltextové a fasetové vyhledávání
|
||||
META desc-en Fulltext and faceted search platform
|
||||
META type service
|
||||
META license GPL
|
||||
IMAGE solr6_6.5.1-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-java8_8.212.04-190620
|
||||
|
||||
RUN EOF
|
||||
# Install runtime dependencies
|
||||
@ -27,7 +22,5 @@ EOF
|
||||
|
||||
COPY lxc
|
||||
|
||||
MOUNT DIR /srv/solr/data var/lib/solr
|
||||
|
||||
USER 8983 8983
|
||||
CMD solr start -f
|
@ -1,11 +1,6 @@
|
||||
IMAGE alpine3.8-nodejs8 8.14.0-190620
|
||||
META title Alpine 3.8 Node.js 8
|
||||
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
|
||||
IMAGE alpine3.8-nodejs8_8.14.0-190620
|
||||
|
||||
LAYER alpine3.8 3.8.4-190620
|
||||
LAYER alpine3.8_3.8.4-190620
|
||||
|
||||
RUN EOF
|
||||
apk --no-cache add nodejs
|
||||
|
@ -1,13 +1,10 @@
|
||||
IMAGE alpine3.8-php5.6 5.6.40-190620
|
||||
META title Alpine 3.8 PHP 5.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
|
||||
IMAGE alpine3.8-php5.6_5.6.40-190620
|
||||
|
||||
LAYER alpine3.8 3.8.4-190620
|
||||
LAYER alpine3.8_3.8.4-190620
|
||||
|
||||
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
|
||||
|
||||
CMD php -a
|
||||
|
@ -1,11 +1,6 @@
|
||||
IMAGE alpine3.8-ruby2.4 2.4.5-190620
|
||||
META title Alpine 3.8 Ruby 2.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
|
||||
IMAGE alpine3.8-ruby2.4_2.4.5-190620
|
||||
|
||||
LAYER alpine3.8 3.8.4-190620
|
||||
LAYER alpine3.8_3.8.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Install Ruby runtime dependencies
|
||||
|
@ -1,9 +1,4 @@
|
||||
IMAGE alpine3.8 3.8.4-190620
|
||||
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
|
||||
IMAGE alpine3.8_3.8.4-190620
|
||||
|
||||
COPY https://github.com/gliderlabs/docker-alpine/raw/rootfs/library-3.8/x86_64/versions/library-3.8/x86_64/rootfs.tar.xz
|
||||
|
||||
@ -13,4 +8,7 @@ RUN EOF
|
||||
|
||||
# Install s6 supervisor
|
||||
apk --no-cache add libxml2 libxslt s6
|
||||
|
||||
# Cleanup
|
||||
rm -rf /etc/crontabs/root /etc/periodic
|
||||
EOF
|
||||
|
@ -1,11 +1,6 @@
|
||||
IMAGE alpine3.9-java8 8.212.04-190620
|
||||
META title Alpine 3.9 OpenJDK 8
|
||||
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
|
||||
IMAGE alpine3.9-java8_8.212.04-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# nss needed due to https://github.com/docker-library/openjdk/issues/289 , https://bugs.alpinelinux.org/issues/10126
|
||||
|
@ -1,11 +1,6 @@
|
||||
IMAGE alpine3.9-nodejs10 10.14.2-190620
|
||||
META title Alpine 3.9 Node.js 10
|
||||
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
|
||||
IMAGE alpine3.9-nodejs10_10.14.2-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
apk --no-cache add nodejs
|
||||
|
@ -1,12 +1,9 @@
|
||||
IMAGE alpine3.9-php7.2 7.2.19-190620
|
||||
META title Alpine 3.9 PHP 7.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
|
||||
IMAGE alpine3.9-php7.2_7.2.19-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
apk --no-cache add nginx php7 php7-ctype php7-fpm php7-gd php7-json php7-mbstring php7-mcrypt php7-opcache php7-session
|
||||
EOF
|
||||
|
||||
CMD php -a
|
||||
|
@ -1,12 +1,9 @@
|
||||
IMAGE alpine3.9-python2.7 2.7.16-190620
|
||||
META title Alpine 3.9 python 2.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
|
||||
IMAGE alpine3.9-python2.7_2.7.16-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
apk --no-cache add python2
|
||||
EOF
|
||||
|
||||
CMD python
|
||||
|
@ -1,13 +1,10 @@
|
||||
IMAGE alpine3.9-python3.6 3.6.8-190620
|
||||
META title Alpine 3.9 python 3.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
|
||||
IMAGE alpine3.9-python3.6_3.6.8-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
apk --no-cache add python3
|
||||
ln -s /usr/bin/python3 /usr/bin/python
|
||||
EOF
|
||||
|
||||
CMD python
|
||||
|
@ -1,11 +1,6 @@
|
||||
IMAGE alpine3.9-ruby2.4 2.4.5-190620
|
||||
META title Alpine 3.9 Ruby 2.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
|
||||
IMAGE alpine3.9-ruby2.4_2.4.5-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
|
||||
RUN EOF
|
||||
# Install Ruby runtime dependencies
|
||||
|
@ -1,12 +1,7 @@
|
||||
IMAGE alpine3.9-tomcat7 7.0.94-190620
|
||||
META title Alpine 3.9 Tomcat 7
|
||||
META desc-cs Základní LXC vrstva s JSP a servlet kontejnerem Tomcat 7
|
||||
META desc-en Basic LXC layer with Tomcat 7 JSP and servlet container
|
||||
META type layer
|
||||
META license GPL
|
||||
IMAGE alpine3.9-tomcat7_7.0.94-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-java8_8.212.04-190620
|
||||
|
||||
RUN EOF
|
||||
# Install Tomcat 7
|
||||
@ -24,3 +19,5 @@ RUN EOF
|
||||
EOF
|
||||
|
||||
COPY lxc
|
||||
|
||||
RUN catalina.sh run
|
||||
|
@ -1,12 +1,7 @@
|
||||
IMAGE alpine3.9-tomcat8.5 8.5.41-190620
|
||||
META title Alpine 3.9 Tomcat 8.5
|
||||
META desc-cs Základní LXC vrstva s JSP a servlet kontejnerem Tomcat 8.5
|
||||
META desc-en Basic LXC layer with Tomcat 8.5 JSP and servlet container
|
||||
META type layer
|
||||
META license GPL
|
||||
IMAGE alpine3.9-tomcat8.5_8.5.41-190620
|
||||
|
||||
LAYER alpine3.9 3.9.4-190620
|
||||
LAYER alpine3.9-java8 8.212.04-190620
|
||||
LAYER alpine3.9_3.9.4-190620
|
||||
LAYER alpine3.9-java8_8.212.04-190620
|
||||
|
||||
RUN EOF
|
||||
# Install Tomcat 8.5
|
||||
@ -29,3 +24,5 @@ RUN EOF
|
||||
EOF
|
||||
|
||||
COPY lxc
|
||||
|
||||
RUN catalina.sh run
|
||||
|
@ -1,9 +1,4 @@
|
||||
IMAGE alpine3.9 3.9.4-190620
|
||||
META title Alpine 3.9
|
||||
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
|
||||
IMAGE alpine3.9_3.9.4-190620
|
||||
|
||||
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
|
||||
@ -14,4 +9,7 @@ RUN EOF
|
||||
|
||||
# Install s6 supervisor
|
||||
apk --no-cache add libxml2 libxslt s6
|
||||
|
||||
# Cleanup
|
||||
rm -rf /etc/crontabs/root /etc/periodic
|
||||
EOF
|
||||
|
Loading…
Reference in New Issue
Block a user