Skip to content

Commit

Permalink
v1: dockerfile
Browse files Browse the repository at this point in the history
  • Loading branch information
xgaia committed Dec 17, 2019
1 parent d623834 commit 86a35a6
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 21 deletions.
32 changes: 32 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
FROM alpine:3.8 as builder
MAINTAINER Xavier Garnier '[email protected]'

COPY . /isqlapi
WORKDIR /isqlapi

RUN apk add --update python3 python3-dev gcc g++ unixodbc-dev && \
python3 -m venv venv && source venv/bin/activate && \
pip install -e .

# Virtuoso
FROM askomics/virtuoso:7.2.5.1 AS virtuoso_builder

# Final image
FROM alpine:3.8

ENV ISQL_API_SERVER_PORT="5050"

ENV ISQL_API_VIRTUOSO_DSN="virtuoso"
ENV ISQL_API_VIRTUOSO_USERNAME="dba"
ENV ISQL_API_VIRTUOSO_PASSWORD="dba"

ENV VIRTUOSO_HOST="virtuoso"

WORKDIR /isqlapi
COPY --from=builder /isqlapi .
COPY --from=virtuoso_builder /usr/local/virtuoso-opensource/lib /usr/local/virtuoso-opensource/lib

RUN apk add --no-cache gettext python3 unixodbc libstdc++ openssl

EXPOSE 5050
CMD sh /isqlapi/docker-run.sh
7 changes: 0 additions & 7 deletions config.ini.template

This file was deleted.

12 changes: 12 additions & 0 deletions docker-run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! /bin/sh

cd /isqlapi

# Create odbc config
envsubst < /isqlapi/odbc.ini.example > /etc/odbc.ini

# Source python venv
source venv/bin/activate

# Serve
gunicorn --bind 0.0.0.0:${ISQL_API_SERVER_PORT} wsgi:app
18 changes: 5 additions & 13 deletions isqlapi.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import os
import pyodbc
import configparser

from flask import Flask
from flask import jsonify
Expand All @@ -13,18 +13,10 @@ class IsqlApi():

def __init__(self):
"""init"""
conf_path = "config.ini"
conf = configparser.ConfigParser()
try:
conf.read(conf_path)
except Exception as e:
print("Failed to read {}".format(conf_path))
raise e

self.port = int(conf["flask"]["port"])
self.virtuoso_dsn = str(conf["virtuoso"]["dsn"])
self.virtuoso_username = str(conf["virtuoso"]["username"])
self.virtuoso_password = str(conf["virtuoso"]["password"])
self.port = int(os.getenv('ISQL_API_SERVER_PORT', 5050))
self.virtuoso_dsn = str(os.getenv('ISQL_API_VIRTUOSO_DSN', "virtuoso"))
self.virtuoso_username = str(os.getenv('ISQL_API_VIRTUOSO_USERNAME', "dba"))
self.virtuoso_password = str(os.getenv('ISQL_API_VIRTUOSO_PASSWORD', "dba"))

connection = pyodbc.connect("DSN={};UID={};PWD={}".format(self.virtuoso_dsn, self.virtuoso_username, self.virtuoso_password))
self.cursor = connection.cursor()
Expand Down
3 changes: 3 additions & 0 deletions odbc.ini.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[virtuoso]
Driver = /usr/local/virtuoso-opensource/lib/virtodbc_r.so
Address = ${VIRTUOSO_HOST}:1111
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

setup(
name='isql-api',
version='0.1.0',
version='1.0.0',
description='''
Rest API to use virtuoso isql commands through HTTP.
''',
Expand Down

0 comments on commit 86a35a6

Please sign in to comment.