diff --git a/.travis.yml b/.travis.yml index c572eb7..4d4e356 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,33 @@ -language: python -python: - - "3.6" -install: - - pip install pipenv - - pipenv install --dev + +services: + - docker + +env: + - secure: "ir3jXjYj2rstjhCTu6dbSZJb6JWiwE+VhoAY1z5KumilS8OU1rSytNyoxNMElcatzzfGYvwwCuh4M8iY5NbtDvWnHGvUXxcuZAKDSZ96bM9QNXlOzTNuRjwl9aQN2majkZCY2irRDmuAVoxodkNxavtw71D9jru5bv0J2kZdvobIjrTLHCj1kpbbxGgzWQz+2pRoX1sL3k7X17sKsf6i+7fG04OgaL1xKgLt2caaD7keAnt7vU8kk3gM2RtFwZHM8+qbnNVDT/lwKSHmjX+8J531F4rqAnPquGqUrOGmfhd6Nu5FG3n3x5/8axBfi+l04/c8lWO4MUCGSxZW6Rwx30HxXKgwff2yHgAo9yYWnOuri5rbDDiemhF7zRXeAl650usI4headAQK7S1q323/3AX+7vueL9L66Wg8u64ywY5EvqwoSBT7AgzvItqXI+PrSMGTimx9k0rMrLDOV0hMERzKaTO9qJb2Em5LNWBWAE76InGSD9F63PxL1NseDSjLHvYHM/dDflaTJBCWY5KMhO9jtqlT9jzu6gUDIzPQvXuusNo8a0V7giQ3vrB4vCLUSN9FUPN/kB5D/xzgAnKgm1gWXqdUoHF17XQxBqfdh0StefNP/5c/7UEFgQ8qgFUgclv4oWB3QN0Qv9V75JYJdcALdVHbz/1w5RgyxttXYVg=" + +before_install: + - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" + - sudo apt-get update + - sudo apt-get -y install docker-ce + - docker --version + - sudo rm /usr/local/bin/docker-compose + - curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` > docker-compose + - chmod +x docker-compose + - sudo mv docker-compose /usr/local/bin + - docker-compose --version + +#install: +# - docker-compose up + script: - - pipenv run pytest \ No newline at end of file +# - docker-compose exec backend pytest + - docker build -t backend ./backend + - docker images + - docker login -u "sztymajakub" -p "$HUB_PASSWORD" https://index.docker.io/v1/ + +deploy: + provider: script + script: bash docker_push.sh + on: + branch: master diff --git a/README.md b/README.md index 1884e21..042e427 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,34 @@ [![Build Status](https://travis-ci.org/apptension/django-restauth.svg?branch=master)](https://travis-ci.org/apptension/django-restauth) + +## Runing on DigitalOcean +``` +Here we use a database on a pod to avoid paying for managed database. +Normally a managed database should be used to run on DigitalOcean. +``` +#### Create pods and services +``` +kubectl apply -f kubernetes +``` +#### Create a database on a pod +``` +kubectl exec db bash +su postgres +psql +create database dev; +``` +#### Run migrations +``` +kubectl exec [dev pod name] bash +./manage.py migrate +./manage.py runserver 0:8000 +``` +### Test deployment +``` +curl http://[load balancer external IP]:8080 +``` + ## Running ``` diff --git a/.env.example b/backend/.env.example similarity index 100% rename from .env.example rename to backend/.env.example diff --git a/Dockerfile b/backend/Dockerfile similarity index 96% rename from Dockerfile rename to backend/Dockerfile index 523a696..f48ecd9 100644 --- a/Dockerfile +++ b/backend/Dockerfile @@ -15,6 +15,6 @@ COPY Pipfile Pipfile.lock ./ RUN pip install --upgrade pip RUN pip install pipenv RUN pipenv install --system --dev -COPY . . +COPY locale . CMD ["./run-backend.sh"] diff --git a/Pipfile b/backend/Pipfile similarity index 100% rename from Pipfile rename to backend/Pipfile diff --git a/Pipfile.lock b/backend/Pipfile.lock similarity index 100% rename from Pipfile.lock rename to backend/Pipfile.lock diff --git a/locale/error_codes/LC_MESSAGES/django.mo b/backend/locale/error_codes/LC_MESSAGES/django.mo similarity index 100% rename from locale/error_codes/LC_MESSAGES/django.mo rename to backend/locale/error_codes/LC_MESSAGES/django.mo diff --git a/locale/error_codes/LC_MESSAGES/django.po b/backend/locale/error_codes/LC_MESSAGES/django.po similarity index 100% rename from locale/error_codes/LC_MESSAGES/django.po rename to backend/locale/error_codes/LC_MESSAGES/django.po diff --git a/manage.py b/backend/manage.py similarity index 100% rename from manage.py rename to backend/manage.py diff --git a/pytest.ini b/backend/pytest.ini similarity index 100% rename from pytest.ini rename to backend/pytest.ini diff --git a/restauth/__init__.py b/backend/restauth/__init__.py similarity index 100% rename from restauth/__init__.py rename to backend/restauth/__init__.py diff --git a/restauth/admin.py b/backend/restauth/admin.py similarity index 100% rename from restauth/admin.py rename to backend/restauth/admin.py diff --git a/restauth/apps.py b/backend/restauth/apps.py similarity index 100% rename from restauth/apps.py rename to backend/restauth/apps.py diff --git a/restauth/jwt.py b/backend/restauth/jwt.py similarity index 100% rename from restauth/jwt.py rename to backend/restauth/jwt.py diff --git a/restauth/migrations/0001_initial.py b/backend/restauth/migrations/0001_initial.py similarity index 100% rename from restauth/migrations/0001_initial.py rename to backend/restauth/migrations/0001_initial.py diff --git a/restauth/migrations/__init__.py b/backend/restauth/migrations/__init__.py similarity index 100% rename from restauth/migrations/__init__.py rename to backend/restauth/migrations/__init__.py diff --git a/restauth/models.py b/backend/restauth/models.py similarity index 100% rename from restauth/models.py rename to backend/restauth/models.py diff --git a/restauth/notifications.py b/backend/restauth/notifications.py similarity index 100% rename from restauth/notifications.py rename to backend/restauth/notifications.py diff --git a/restauth/serializers.py b/backend/restauth/serializers.py similarity index 100% rename from restauth/serializers.py rename to backend/restauth/serializers.py diff --git a/restauth/settings.py b/backend/restauth/settings.py similarity index 98% rename from restauth/settings.py rename to backend/restauth/settings.py index 6cc0b2f..2e74e31 100644 --- a/restauth/settings.py +++ b/backend/restauth/settings.py @@ -109,7 +109,7 @@ AUTH_USER_MODEL = 'restauth.User' LOCALE_PATHS = [ - os.path.join(BASE_DIR, 'locale') + os.path.join(BASE_DIR, '../../locale') ] REST_FRAMEWORK = { diff --git a/restauth/tests/__init__.py b/backend/restauth/tests/__init__.py similarity index 100% rename from restauth/tests/__init__.py rename to backend/restauth/tests/__init__.py diff --git a/restauth/tests/conftest.py b/backend/restauth/tests/conftest.py similarity index 100% rename from restauth/tests/conftest.py rename to backend/restauth/tests/conftest.py diff --git a/restauth/tests/factories.py b/backend/restauth/tests/factories.py similarity index 100% rename from restauth/tests/factories.py rename to backend/restauth/tests/factories.py diff --git a/restauth/tests/tests.py b/backend/restauth/tests/tests.py similarity index 100% rename from restauth/tests/tests.py rename to backend/restauth/tests/tests.py diff --git a/restauth/tokens.py b/backend/restauth/tokens.py similarity index 100% rename from restauth/tokens.py rename to backend/restauth/tokens.py diff --git a/restauth/urls.py b/backend/restauth/urls.py similarity index 100% rename from restauth/urls.py rename to backend/restauth/urls.py diff --git a/restauth/utils.py b/backend/restauth/utils.py similarity index 100% rename from restauth/utils.py rename to backend/restauth/utils.py diff --git a/restauth/views.py b/backend/restauth/views.py similarity index 100% rename from restauth/views.py rename to backend/restauth/views.py diff --git a/restauth/wsgi.py b/backend/restauth/wsgi.py similarity index 100% rename from restauth/wsgi.py rename to backend/restauth/wsgi.py diff --git a/backend/run-backend.sh b/backend/run-backend.sh new file mode 100755 index 0000000..376959d --- /dev/null +++ b/backend/run-backend.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +echo 'Hello' +./wait-for-it.sh db:5432 +python manage.py migrate +python manage.py runserver 0:8080 diff --git a/wait-for-it.sh b/backend/wait-for-it.sh similarity index 100% rename from wait-for-it.sh rename to backend/wait-for-it.sh diff --git a/docker-compose.yml b/docker-compose.yml index 08d7579..718e31e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: depends_on: - "db" restart: on-failure - env_file: .env + env_file: .env.example volumes: restauth_backend: diff --git a/docker_push.sh b/docker_push.sh new file mode 100755 index 0000000..db84678 --- /dev/null +++ b/docker_push.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker tag backend sztymajakub/main +docker push sztymajakub/main diff --git a/kubernetes/db-deployment.yaml b/kubernetes/db-deployment.yaml new file mode 100644 index 0000000..a8ef918 --- /dev/null +++ b/kubernetes/db-deployment.yaml @@ -0,0 +1,37 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.19.0 () + creationTimestamp: null + labels: + app: v1 + name: dev +spec: + replicas: 1 + selector: + matchLabels: + app: v1 + strategy: {} + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.19.0 () + creationTimestamp: null + labels: + app: v1 + spec: + containers: + - image: sztymajakub/main:latest + name: dev + ports: + - containerPort: 8080 + envFrom: + - configMapRef: + name: cm + args: + - ./run_django.sh + imagePullPolicy: Always +status: {} diff --git a/kubernetes/db-pod.yaml b/kubernetes/db-pod.yaml new file mode 100644 index 0000000..7bf5b5c --- /dev/null +++ b/kubernetes/db-pod.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + creationTimestamp: null + labels: + app: db + name: db +spec: + containers: + - image: postgres:9.6 + name: db + ports: + - containerPort: 5432 + resources: {} + restartPolicy: OnFailure +status: {} diff --git a/kubernetes/db-service.yaml b/kubernetes/db-service.yaml new file mode 100644 index 0000000..fc8472a --- /dev/null +++ b/kubernetes/db-service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: db +spec: + selector: + app: db + ports: + - name: "5432" + port: 5432 + targetPort: 5432 +status: + loadBalancer: {} diff --git a/kubernetes/dev-service.yaml b/kubernetes/dev-service.yaml new file mode 100644 index 0000000..61892c3 --- /dev/null +++ b/kubernetes/dev-service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: dev-svc +spec: + selector: + app: dev + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 diff --git a/kubernetes/load-balancer.yaml b/kubernetes/load-balancer.yaml new file mode 100644 index 0000000..e206a73 --- /dev/null +++ b/kubernetes/load-balancer.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: lb +spec: + selector: + app: v1 + ports: + - port: 8080 + targetPort: 8080 + type: LoadBalancer