]> git.parisson.com Git - telemeta.git/commitdiff
optimize docker composition, fix various env bugs
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 14 Jan 2016 22:45:34 +0000 (23:45 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 14 Jan 2016 22:45:34 +0000 (23:45 +0100)
.gitignore
Dockerfile
app/deploy/start_app.sh
app/sandbox/settings.py
app/sandbox/tm-docker-compose.env [new file with mode: 0644]
docker-compose.yml
setup.py
telemeta/pages

index a3908b6d0cf5affe211535d3f9caabc45bc9a03a..ce93772b0aff770e930c57900e55bbf58b132023 100644 (file)
@@ -10,6 +10,7 @@ eggs
 parts
 bin
 var
+data
 sdist
 develop-eggs
 .installed.cfg
@@ -27,9 +28,3 @@ pip-log.txt
 
 #Mr Developer
 .mr.developer.cfg
-
-#app
-media
-static
-var
-
index 9ae01c2dcdf5a6740efc7be97e9cdd98fefeaa6b..ef476e7ac3216eb0ba39c1c774d198bb1c4382af 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM parisson/timeside:latest-dev
+FROM timeside_app:latest
 
 MAINTAINER Guillaume Pellerin <yomguy@parisson.com>, Thomas fillon <thomas@parisson.com>
 
-RUN mkdir /srv/app
-RUN mkdir /srv/src
-RUN mkdir /srv/src/app
-
-COPY . /srv/src/app
-WORKDIR /srv/src/app
+RUN mkdir /srv/src/telemeta
+COPY . /srv/src/telemeta
+WORKDIR /srv/src/telemeta
 RUN pip install -r requirements.txt
 RUN pip install -r requirements-dev.txt --src /srv/src
-WORKDIR /srv/app
 
+WORKDIR /srv/app
 EXPOSE 8000
index d6f8de52e2370936d73a051845464753ab2ac871..6b61ddf5f47688f9a9c6ada9c6ffe3fa91d71b3c 100644 (file)
@@ -5,6 +5,9 @@ app='/srv/app'
 manage=$app'/manage.py'
 wsgi=$app'/wsgi.py'
 static='/srv/static/'
+media='/srv/media/'
+
+chown www-data:www-data $media
 
 # uwsgi params
 port=8000
@@ -15,7 +18,7 @@ uid='www-data'
 gid='www-data'
 
 # stating apps
-pip install redis
+pip install redis
 
 # waiting for other services
 sh $app/deploy/wait.sh
index d86be7123fdadf3eab8926b76f336c2cec7dd914..040367e6e99bf2ed2dc6ef34d3e80f6ea752e6dd 100644 (file)
@@ -4,11 +4,19 @@
 import os, sys
 from django.core.urlresolvers import reverse_lazy, reverse
 
-sys.dont_write_bytecode = True
+import environ
+
+# set default values and casting
+env = environ.Env(DEBUG=(bool, False),
+                  CELERY_ALWAYS_EAGER=(bool, False),
+                  )
 
-DEBUG = True
+# Django settings for server project.
+DEBUG = env('DEBUG') # False if not in os.environ
 TEMPLATE_DEBUG = DEBUG
 
+sys.dont_write_bytecode = True
+
 ALLOWED_HOSTS = ['*']
 
 ADMINS = (
@@ -23,18 +31,10 @@ PROJECT_ROOT = '/srv/app/'
 
 DATABASES = {
     'default': {
-        # SQLite config
-        # 'ENGINE': 'django.db.backends.sqlite',  # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        # 'NAME': os.path.join(PROJECT_ROOT, 'telemeta.sql'),  # Or path to database file if using sqlite3.
-        # 'OPTIONS': {
-        #     'timeout': 60,
-        # }
-
-        # MySQL config
-        'ENGINE': 'django.db.backends.mysql',  # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        'USER': os.environ.get('DB_ENV_MYSQL_USER'),      # Not used with sqlite3.
-        'PASSWORD': os.environ.get('DB_ENV_MYSQL_PASSWORD'),  # Not used with sqlite3.
-        'NAME': os.environ.get('DB_ENV_MYSQL_DATABASE'),
+        'ENGINE': env('ENGINE'),  # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
+        'USER': env('MYSQL_USER'),      # Not used with sqlite3.
+        'PASSWORD': env('MYSQL_PASSWORD'),  # Not used with sqlite3.
+        'NAME': env('MYSQL_DATABASE'),
         'HOST': 'db',      # Set to empty string for localhost. Not used with sqlite3.
         'PORT': '3306',      # Set to empty string for default. Not used with sqlite3.
     }
@@ -284,16 +284,16 @@ LOGGING = {
     }
 }
 
-from celery_app import app
-# replace rabbitmq by localhost if you start your app outside docker-compose
-# BROKER_URL = 'amqp://guest:guest@broker//'
-BROKER_URL = 'redis://broker:6379/0'
+BROKER_URL = env('BROKER_URL')
+
 CELERY_IMPORTS = ("timeside.server.tasks",)
 CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
 CELERY_TASK_SERIALIZER = 'json'
 CELERY_RESULT_SERIALIZER = 'json'
 CELERY_ACCEPT_CONTENT = ['application/json']
 
+from celery_app import app
+
 HAYSTACK_CONNECTIONS = {
     'default': {
         'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
diff --git a/app/sandbox/tm-docker-compose.env b/app/sandbox/tm-docker-compose.env
new file mode 100644 (file)
index 0000000..465d6be
--- /dev/null
@@ -0,0 +1,19 @@
+# -- MYSQL DATABASE
+
+ENGINE=django.db.backends.mysql
+MYSQL_ROOT_PASSWORD=mysecretpassword
+MYSQL_DATABASE=telemeta
+MYSQL_USER=telemeta
+MYSQL_PASSWORD=mysecretpassword
+
+# -- DJANGO
+
+DEBUG=True
+
+SECRET_KEY=ghv8us2587n97dq&w$c((o5rj_$-9#d-8j#57y_a9og8wux1h7
+
+# replace broker by localhost if you start your app outside docker-compose
+BROKER_URL=redis://broker:6379/0
+
+# If this is True, all tasks will be executed locally by blocking until the task returns.
+CELERY_ALWAYS_EAGER=False
index 3499c8deab691a35ea56f633e34db467241b8e62..623f5088b5e3eb68e4e74ef1afdee7606828c2ed 100644 (file)
 # Thomas Fillon <thomas@parisson.com>
 
 
-media:
+data:
   image: debian:jessie
   volumes:
-     - ./media/:/srv/media
-     - ./static/:/srv/static
-     - ./backup/:/srv/backup
+     - ./data/media/:/srv/media
+     - ./data/static/:/srv/static
+     - ./data/backup/:/srv/backup
   command: "true"
 
 db:
   image: mysql
   volumes:
-    - ./app/deploy/my.cnf:/etc/mysql/my.cnf
-    - ./var/lib/mysql/:/var/lib/mysql
+    - ./data/var/lib/mysql/:/var/lib/mysql
+    - ./data/var/log/mysql/:/var/log/mysql
   volumes_from:
-    - media
-  environment:
-    - MYSQL_ROOT_PASSWORD=ItCydyatzix8
-    - MYSQL_DATABASE=telemeta
-    - MYSQL_USER=telemeta
-    - MYSQL_PASSWORD=iuvIlkyisFit2
+    - data
+  env_file:
+    - app/sandbox/tm-docker-compose.env
 
 broker:
   image: redis
@@ -53,14 +50,14 @@ app:
   build: .
   volumes:
     - ./app/:/srv/app
-    - ./telemeta/:/srv/src/app/telemeta
+    - ./telemeta/:/srv/src/telemeta/telemeta
   volumes_from:
-    - media
+    - data
+  env_file:
+    - app/sandbox/tm-docker-compose.env
   command: /bin/sh deploy/start_app.sh
   ports:
     - "9001:9000"
-  expose:
-    - "8000"
   links:
     - broker
     - db
@@ -70,6 +67,8 @@ worker:
   build: .
   volumes_from:
     - app
+  env_file:
+    - app/sandbox/tm-docker-compose.env
   command: /bin/sh deploy/celery_app.sh
   links:
     - broker
@@ -78,12 +77,12 @@ worker:
 nginx:
   image: nginx
   ports:
-    - "8000:80"
+    - "8001:80"
   volumes:
     - ./app/deploy/nginx-app.conf:/etc/nginx/conf.d/default.conf
     - ./var/log/nginx/:/var/log/nginx
   volumes_from:
-    - media
+    - data
   links:
     - app
     - phpmyadmin
index 5f33c1d8f6bc9223220e240784df9d8dc5906db3..7fa75c1b244aa934bf725981a4854644b19fc108 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -71,8 +71,8 @@ setup(
         'pyyaml',
         'python-ebml',
         'zipstream',
-        'django-haystack',
         'elasticsearch==1.6.0',
+        'django-haystack',
         'ebooklib',
     ],
   tests_require=['pytest-django', 'pytest-cov', 'factory-boy'],
index f8324093174d077b674ac2c52eb0db6eaf815ab5..4fcb6022f8a1cf0780fc526737e84b8e690c1f88 160000 (submodule)
@@ -1 +1 @@
-Subproject commit f8324093174d077b674ac2c52eb0db6eaf815ab5
+Subproject commit 4fcb6022f8a1cf0780fc526737e84b8e690c1f88