diff --git a/samples/development-frameworks/SqlServerOnDocker/.gitignore b/samples/development-frameworks/SqlServerOnDocker/.gitignore new file mode 100644 index 00000000..8dc20430 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/.gitignore @@ -0,0 +1,95 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# IPython Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject + +# ignore pycharm/webstorm files +.idea + + + diff --git a/samples/development-frameworks/SqlServerOnDocker/LICENSE b/samples/development-frameworks/SqlServerOnDocker/LICENSE new file mode 100644 index 00000000..8dada3ed --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed 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. diff --git a/samples/development-frameworks/SqlServerOnDocker/README.md b/samples/development-frameworks/SqlServerOnDocker/README.md new file mode 100644 index 00000000..83b3eb2f --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/README.md @@ -0,0 +1,21 @@ +# SqlServerOnDocker +Prof of concept project with Microsoft SQL Server and Django Framework setup on docker containers. + +## To start development: +1. install [docker](https://docs.docker.com/#/components) and [docker-compose](https://docs.docker.com/compose/install/) +2. clone this repository +2. run `docker-compose build db` to build web container +2. sudo docker-compose run db sqlcmd -S db1.internal.prod.example.com -U SA -P 'Alaska2017' -Q 'create database docker2;' +3. run `docker-compose up web` to test web and db containers +5. run `docker-compose run web python manage.py migrate` to apply migrations. **Important! all migrations will go to master database unless you create new database and update settings.py files** +6. run `docker-compose run web python manage.py createsuperuser` to create admin account + +## To run project: +1. +1. run `docker-compose up web` +2. point your browser to `localhost:8080` +3. press `CTRL+C` to stop + +## Access to sql server +1. sudo docker-compose run db sqlcmd -S db1.internal.prod.example.com -U SA -P 'Alaska2017' -Q 'select 1' +2. sudo docker exec -it sqlserverondocker_db_1 bash \ No newline at end of file diff --git a/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/__init__.py b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/settings.py b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/settings.py new file mode 100644 index 00000000..efd9213d --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/settings.py @@ -0,0 +1,129 @@ +""" +Django settings for SqlServerOnDocker project. + +Generated by 'django-admin startproject' using Django 1.10.5. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.10/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'd-uguc(o8$i@^ea_+m^tv^_tt7loyf6zf^o3%*ws#zs42_u#(&' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'core', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'SqlServerOnDocker.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')] + , + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'SqlServerOnDocker.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.10/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'sql_server.pyodbc', + 'NAME': 'master', + 'USER': 'sa', + 'PASSWORD': 'Alaska2017', + 'HOST': 'db1.internal.prod.example.com', + 'PORT': '1433', + 'OPTIONS': { + 'driver': 'ODBC Driver 13 for SQL Server' + } + } +} + + +# Password validation +# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/1.10/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.10/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/urls.py b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/urls.py new file mode 100644 index 00000000..70feab89 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/urls.py @@ -0,0 +1,21 @@ +"""SqlServerOnDocker URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url +from django.contrib import admin + +urlpatterns = [ + url(r'^admin/', admin.site.urls), +] diff --git a/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/wsgi.py b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/wsgi.py new file mode 100644 index 00000000..9c8036cd --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/SqlServerOnDocker/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for SqlServerOnDocker project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SqlServerOnDocker.settings") + +application = get_wsgi_application() diff --git a/samples/development-frameworks/SqlServerOnDocker/core/__init__.py b/samples/development-frameworks/SqlServerOnDocker/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/samples/development-frameworks/SqlServerOnDocker/core/admin.py b/samples/development-frameworks/SqlServerOnDocker/core/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/core/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/samples/development-frameworks/SqlServerOnDocker/core/apps.py b/samples/development-frameworks/SqlServerOnDocker/core/apps.py new file mode 100644 index 00000000..26f78a8e --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/core/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class CoreConfig(AppConfig): + name = 'core' diff --git a/samples/development-frameworks/SqlServerOnDocker/core/migrations/__init__.py b/samples/development-frameworks/SqlServerOnDocker/core/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/samples/development-frameworks/SqlServerOnDocker/core/models.py b/samples/development-frameworks/SqlServerOnDocker/core/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/core/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/samples/development-frameworks/SqlServerOnDocker/core/tests.py b/samples/development-frameworks/SqlServerOnDocker/core/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/core/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/samples/development-frameworks/SqlServerOnDocker/core/views.py b/samples/development-frameworks/SqlServerOnDocker/core/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/core/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/samples/development-frameworks/SqlServerOnDocker/docker-compose.yml b/samples/development-frameworks/SqlServerOnDocker/docker-compose.yml new file mode 100644 index 00000000..65537a33 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/docker-compose.yml @@ -0,0 +1,44 @@ +version: '2.1' + +services: + + db: + build: + context: ./docker/db/ + dockerfile: Dockerfile + ports: + - "1433:1433" + environment: + SA_PASSWORD: "Alaska2017" + ACCEPT_EULA: "Y" + healthcheck: + test: sqlcmd -S db1.internal.prod.example.com -U SA -P 'Alaska2017' -Q 'select 1' + networks: + mynetwork: + aliases: + - db1.internal.prod.example.com + + web: + build: + context: ./docker/web/ + dockerfile: Dockerfile + user: root + depends_on: + db: + condition: service_healthy + volumes: + - .:/code/ + ports: + - "8080:8000" + environment: + DJANGO_SETTINGS_MODULE: SqlServerOnDocker.settings + command: python3 manage.py runserver 0.0.0.0:8000 + restart: unless-stopped + networks: + mynetwork: + aliases: + - web1.internal.prod.example.com + +networks: + mynetwork: + driver: bridge \ No newline at end of file diff --git a/samples/development-frameworks/SqlServerOnDocker/docker/db/Dockerfile b/samples/development-frameworks/SqlServerOnDocker/docker/db/Dockerfile new file mode 100644 index 00000000..aa1d6ade --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/docker/db/Dockerfile @@ -0,0 +1,20 @@ +FROM microsoft/mssql-server-linux + +RUN apt-get update && apt-get install -y \ + curl \ + apt-transport-https + +# https://docs.microsoft.com/en-us/sql/connect/odbc/linux/installing-the-microsoft-odbc-driver-for-sql-server-on-linux +RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - +RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list +RUN apt-get update +RUN ACCEPT_EULA=Y apt-get install -y \ + mssql-tools + +RUN apt-get install -y locales \ + && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && locale-gen + +ENV PATH="/opt/mssql-tools/bin:${PATH}" + + diff --git a/samples/development-frameworks/SqlServerOnDocker/docker/web/Dockerfile b/samples/development-frameworks/SqlServerOnDocker/docker/web/Dockerfile new file mode 100644 index 00000000..b5b9f7d0 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/docker/web/Dockerfile @@ -0,0 +1,32 @@ +FROM ubuntu:16.04 + +RUN apt-get update && apt-get install -y \ + curl \ + apt-transport-https + +# https://docs.microsoft.com/en-us/sql/connect/odbc/linux/installing-the-microsoft-odbc-driver-for-sql-server-on-linux +RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - +RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list +RUN apt-get update +RUN ACCEPT_EULA=Y apt-get install -y \ + msodbcsql \ + mssql-tools \ + unixodbc-dev + +#python part of the game +RUN apt-get update && apt-get install -y \ + python3.5 \ + python3-pip \ + python3-setuptools + +RUN apt-get install -y locales \ + && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && locale-gen + +RUN pip3 install --upgrade pip + +ENV PYTHONUNBUFFERED 1 +RUN mkdir /code +WORKDIR /code +ADD requirements.txt /code/ +RUN pip3 install -r requirements.txt diff --git a/samples/development-frameworks/SqlServerOnDocker/docker/web/requirements.txt b/samples/development-frameworks/SqlServerOnDocker/docker/web/requirements.txt new file mode 100644 index 00000000..e6a6e1ee --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/docker/web/requirements.txt @@ -0,0 +1,2 @@ +Django==1.10.5 +django-pyodbc-azure==1.10.4.0 diff --git a/samples/development-frameworks/SqlServerOnDocker/manage.py b/samples/development-frameworks/SqlServerOnDocker/manage.py new file mode 100755 index 00000000..a23e2708 --- /dev/null +++ b/samples/development-frameworks/SqlServerOnDocker/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SqlServerOnDocker.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv)