Skip to content

Commit

Permalink
ENH: added different flavours of Dockerfiles
Browse files Browse the repository at this point in the history
  • Loading branch information
allfro committed Aug 8, 2016
1 parent 7d3cca7 commit 831c4e1
Show file tree
Hide file tree
Showing 8 changed files with 152 additions and 24 deletions.
6 changes: 5 additions & 1 deletion Dockerfile → Dockerfile-alpine
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
FROM alpine

ENV DOCKER=alpine

COPY . /root/sdist

RUN apk add --no-cache \
ca-certificates \
alpine-sdk \
Expand All @@ -11,7 +15,7 @@ RUN apk add --no-cache \
python setup.py install && \
cd /root && \
rm -rf sdist && \
apk del \
apk del --purge \
alpine-sdk \
python-dev

Expand Down
24 changes: 24 additions & 0 deletions Dockerfile-kalilinux
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FROM kalilinux/kali-linux-docker

ENV DOCKER=kali

COPY . /root/sdist

RUN apt-get update && \
apt-get -y dist-upgrade && \
apt-get install -y \
ca-certificates \
build-essential \
python-lxml \
python-dev \
python-setuptools && \
cd /root/sdist && \
python setup.py install && \
cd /root && \
rm -rf sdist && \
apt-get purge --auto-remove -y \
build-essential \
python-dev && \
apt-get clean

ENTRYPOINT ["canari"]
24 changes: 24 additions & 0 deletions Dockerfile-ubuntu
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FROM ubuntu:14.04

ENV DOCKER=ubuntu

COPY . /root/sdist

RUN apt-get update && \
apt-get -y dist-upgrade && \
apt-get install -y \
ca-certificates \
build-essential \
python-lxml \
python-dev \
python-setuptools && \
cd /root/sdist && \
python setup.py install && \
cd /root && \
rm -rf sdist && \
apt-get purge --auto-remove -y \
build-essential \
python-dev && \
apt-get clean

ENTRYPOINT ["canari"]
25 changes: 25 additions & 0 deletions build_dockers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash

set -x

echo "Make sure your Docker environment has been set"

SOURCE_DIR=`dirname ${BASH_SOURCE[0]}`

pushd src

VERSION=`python -c 'import canari; print canari.__version__'`

popd

echo $SOURCE_DIR

pushd $SOURCE_DIR

docker build -t redcanari/canari:$VERSION-alpine -f Dockerfile-alpine .
docker build -t redcanari/canari:$VERSION-ubuntu -f Dockerfile-ubuntu .
docker build -t redcanari/canari:$VERSION-kalilinux -f Dockerfile-kalilinux .
docker tag -f redcanari/canari:$VERSION-alpine redcanari/canari
#docker push redcanari/canari

popd
39 changes: 23 additions & 16 deletions src/canari/commands/dockerize_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import re

from canari import question
from canari import question, __version__ as version
from mrbob.configurator import Configurator

from canari.project import CanariProject
Expand All @@ -14,11 +14,11 @@
from framework import SubCommand, Argument

__author__ = 'Nadeem Douba'
__copyright__ = 'Copyright 2012, Canari Project'
__copyright__ = 'Copyright 2016, Canari Project'
__credits__ = ['Nadeem Douba']

__license__ = 'GPLv3'
__version__ = '0.5'
__version__ = '0.2'
__maintainer__ = 'Nadeem Douba'
__email__ = 'ndouba@gmail.com'
__status__ = 'Development'
Expand All @@ -28,21 +28,28 @@ def run_command(args, **kwargs):
print 'Running command: %s' % ' '.join(args)
return subprocess.Popen(args, **kwargs)


@SubCommand(
canari_main,
help='Creates a Docker build file pre-configured with Plume.',
description='Creates a Docker build file that can be used to run remote transforms using Plume.'
canari_main,
help='Creates a Docker build file pre-configured with Plume.',
description='Creates a Docker build file that can be used to run remote transforms using Plume.'
)
@Argument(
'-H',
'--host',
metavar='[host]',
action='append',
default=[],
help='Docker daemon socket(s) to connect to'
)
@Argument(
'-H',
'--host',
metavar='[host]',
action='append',
default=[],
help='Docker daemon socket(s) to connect to'
'-O',
'--os',
metavar='[container OS]',
choices=['alpine', 'ubuntu', 'kalilinux'],
default='alpine'
)
def dockerize_package(args):

project = CanariProject()

print('Dockerizing %s transform package...' % project.name)
Expand All @@ -51,7 +58,7 @@ def dockerize_package(args):
'canari.resources.templates:dockerize_package',
project.root_dir,
{'non_interactive': True},
variables={'project.name': project.name}
variables={'project.name': project.name, 'canari.version': version}
)

print('Creating Dockerfile for %s...' % project.name)
Expand All @@ -66,7 +73,7 @@ def dockerize_package(args):
exit(-1)

docker_hosts = [j for sublist in [('-H', i) for i in args.host] for j in sublist]
container = '%s/%s' % (project.name, project.name)
container = '%s/%s:%s' % (project.name, project.name, args.os)

if not args.host:
if not find_executable('docker-machine'):
Expand All @@ -90,7 +97,7 @@ def dockerize_package(args):
os.environ.update(re.findall(r'export ([^=]+)="([^"]+)', env))

with PushDir(project.root_dir):
p = run_command(['docker'] + docker_hosts + ['build', '-t', container, '.'])
p = run_command(['docker'] + docker_hosts + ['build', '-t', container, '-f', 'Dockerfile-%s' % args.os, '.'])
p.communicate()
if p.returncode:
print 'An error occurred while building the Docker container.'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
FROM redcanari/canari
FROM redcanari/canari:{{{ canari.version }}}-alpine

ADD . /root/sdist

RUN apk add --no-cache \
ca-certificates \
alpine-sdk \
python-dev \
py-lxml \
py-setuptools \
py-twisted && \
python-dev && \
cd /root/sdist && \
python setup.py install && \
cd /root && \
Expand All @@ -18,5 +16,7 @@ RUN apk add --no-cache \
apk del \
alpine-sdk \
python-dev

EXPOSE 8080
ENTRYPOINT /etc/init.d/plume start-docker

ENTRYPOINT /etc/init.d/plume start-docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM redcanari/canari:{{{ canari.version }}}-kalilinux

ADD . /root/sdist

RUN apk add --no-cache \
alpine-sdk \
python-dev && \
cd /root/sdist && \
python setup.py install && \
cd /root && \
rm -rf /root/sdist && \
mkdir -p /var/plume && \
cd /var/plume && \
canari install-plume -y && \
canari load-plume-package -y {{{ project.name }}} && \
apk del \
alpine-sdk \
python-dev

EXPOSE 8080

ENTRYPOINT /etc/init.d/plume start-docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM redcanari/canari:{{{ canari.version }}}-ubuntu

ADD . /root/sdist

RUN apk add --no-cache \
alpine-sdk \
python-dev && \
cd /root/sdist && \
python setup.py install && \
cd /root && \
rm -rf /root/sdist && \
mkdir -p /var/plume && \
cd /var/plume && \
canari install-plume -y && \
canari load-plume-package -y {{{ project.name }}} && \
apk del \
alpine-sdk \
python-dev

EXPOSE 8080

ENTRYPOINT /etc/init.d/plume start-docker

0 comments on commit 831c4e1

Please sign in to comment.