Skip to content

Commit 4cdd730

Browse files
author
Didarul Amin
committed
Initial Commit
1 parent ba91c47 commit 4cdd730

21 files changed

+9630
-0
lines changed

Dockerfile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
FROM python:3.7-slim AS base
2+
3+
# Mount volume
4+
ADD ./src /app
5+
6+
# Set working directory
7+
WORKDIR /app
8+
9+
RUN ls -l
10+
11+
# Setup dependencies for pyodbc
12+
RUN \
13+
export ACCEPT_EULA='Y' && \
14+
export MYSQL_CONNECTOR='mysql-connector-odbc-8.0.18-linux-glibc2.12-x86-64bit' && \
15+
apt-get update && \
16+
apt-get install -y curl build-essential unixodbc-dev g++ apt-transport-https && \
17+
#
18+
# Install pyodbc db drivers for MSSQL, PG and MySQL
19+
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
20+
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
21+
curl -L -o ${MYSQL_CONNECTOR}.tar.gz https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/${MYSQL_CONNECTOR}.tar.gz && \
22+
apt-get update && \
23+
gunzip ${MYSQL_CONNECTOR}.tar.gz && tar xvf ${MYSQL_CONNECTOR}.tar && \
24+
cp ${MYSQL_CONNECTOR}/bin/* /usr/local/bin && cp ${MYSQL_CONNECTOR}/lib/* /usr/local/lib && \
25+
myodbc-installer -a -d -n "MySQL ODBC 8.0 Driver" -t "Driver=/usr/local/lib/libmyodbc8w.so" && \
26+
myodbc-installer -a -d -n "MySQL ODBC 8.0" -t "Driver=/usr/local/lib/libmyodbc8a.so" && \
27+
apt-get install -y msodbcsql17 odbc-postgresql && \
28+
#
29+
# Update odbcinst.ini to make sure full path to driver is listed
30+
sed 's/Driver=psql/Driver=\/usr\/lib\/x86_64-linux-gnu\/odbc\/psql/' /etc/odbcinst.ini > /tmp/temp.ini && \
31+
mv -f /tmp/temp.ini /etc/odbcinst.ini && \
32+
# Install dependencies
33+
pip install --upgrade pip && \
34+
pip install -r requirements.txt && rm requirements.txt
35+
## Cleanup build dependencies
36+
#rm -rf ${MYSQL_CONNECTOR}* && \
37+
#apt-get remove -y curl apt-transport-https debconf-utils g++ gcc rsync unixodbc-dev build-essential gnupg2 && \
38+
#apt-get autoremove -y && apt-get autoclean -y
39+
40+
# install pyodbc (and, optionally, sqlalchemy)
41+
RUN pip install --trusted-host pypi.python.org pyodbc==4.0.26 sqlalchemy==1.3.5
42+
43+
ENV FLASK_APP=server.py
44+
45+
# Hot reload flag
46+
ENV FLASK_ENV=development
47+
48+
# Run flask app on port 6650
49+
ENV FLASK_RUN_PORT=6650
50+
CMD ["flask", "run", "--host", "0.0.0.0"]

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,18 @@
11
# Python-SQL-Server-Docker
22
Python SQL Server Docker
3+
4+
#### Install
5+
`docker-compose up -d`
6+
7+
Python Endpoint: `http://localhost:6650/`
8+
9+
SQL Server Admin: `http://localhost:4170`
10+
11+
Email: `admin@admin.com`
12+
13+
Pass: `12345`
14+
15+
Create a DB Connection if the list is empty.
16+
17+
Host: `mssql`, Database: `Northwind`, Database Username: `sa`, Database Password: `SuperP4ssw0rd!`
18+

docker-compose.yml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# docker-compose.yml
2+
3+
## Author: Didarul Amin
4+
## -------------------------------------------------------------------------
5+
## DB ADMIN: 4170
6+
## PYTHON PORT: 6650
7+
## SQL SERVER PORT: 1433
8+
## -------------------------------------------------------------------------
9+
10+
version: '3.4'
11+
services:
12+
13+
# -- SQL SERVER ---
14+
mssql:
15+
image: microsoft/mssql-server-linux:latest
16+
container_name: mssql
17+
ports:
18+
- 1433:1433
19+
volumes:
20+
- /var/opt/mssql
21+
# we copy our scripts onto the container
22+
- ./sql:/usr/src/app
23+
# bash will be executed from that path, our scripts folder
24+
working_dir: /usr/src/app
25+
# run the entrypoint.sh that will import the data AND sqlserver
26+
command: sh -c ' chmod +x ./start.sh; ./start.sh & /opt/mssql/bin/sqlservr;'
27+
environment:
28+
ACCEPT_EULA: 'Y'
29+
SA_PASSWORD: SuperP4ssw0rd!
30+
networks:
31+
vscode:
32+
aliases:
33+
- vscode
34+
35+
# -- SQL SERVER CLIENT---
36+
sqlpad:
37+
image: 'sqlpad/sqlpad:latest'
38+
hostname: 'sqlpad'
39+
container_name: sqlpad
40+
ports:
41+
- '4170:3000'
42+
environment:
43+
- SQLPAD_DEBUG=true
44+
- SQLPAD_ADMIN=admin@admin.com
45+
- SQLPAD_ADMIN_PASSWORD=12345
46+
#- DISABLE_USERPASS_AUTH=true
47+
#- SQLPAD_QUERY_RESULT_MAX_ROWS=50000
48+
#- SQLPAD_ALLOW_CONNECTION_ACCESS_TO_EVERYONE=true
49+
volumes:
50+
- ./sqlpad:/var/lib/sqlpad
51+
networks:
52+
vscode:
53+
aliases:
54+
- vscode
55+
56+
python_app:
57+
container_name: python_app
58+
restart: always
59+
build:
60+
context: .
61+
dockerfile: Dockerfile
62+
volumes:
63+
- ./src:/app
64+
links:
65+
#- redis_cache
66+
- mssql
67+
ports:
68+
- '6650:6650/tcp'
69+
networks:
70+
vscode:
71+
aliases:
72+
- vscode
73+
74+
networks:
75+
vscode:
76+
driver: bridge

0 commit comments

Comments
 (0)