Provo a creare una finestra di sviluppo basata sulla finestra mobile per la nostra app django. Funziona senza intoppi.finestra mobile con pycharm 5
Nessuno dei miei membri della squadra si prenderà cura di questo finché non ci sarà una bella integrazione IDE, quindi suono il nuovo e brillante Docker Support in pycharm 5.
Ho seguito la documentazione collegata e pycharm riconosce il mio contenitore web ed è un interprete python.
Ecco la mia finestra mobile-compose.yml:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/srv/app
links:
- database
- search
- cache
entrypoint: /home/deployer/web-entrypoint.sh
worker:
build: .
volumes:
- .:/srv/app
command: celery -A core worker -l info
links:
- database
- search
- cache
database:
image: postgres:latest
volumes_from:
- data
environment:
- POSTGRES_USER=app_user
- POSTGRES_PASSWORD=app_password
data:
image: busybox
volumes:
- /var/lib/postgresql/data
search:
image: "elasticsearch:1.7"
command: "elasticsearch --http.bind_host=0.0.0.0"
ports:
- "9200:9200"
cache:
image: "redis:latest"
ports:
- "6379"
Purtroppo non v'è alcun supporto finestra mobile-composizione in PyCharm, è per questo che Djangos runserver
fallito al momento della connessione al database. Perciò ho copiato gli alias (per fortuna prevedibili) dal contenitore web /etc/host
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'app_db',
'USER': 'app_user',
'PASSWORD': 'app_password',
'HOST': 'docker_database_1',
'PORT': '5432',
}
}
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://docker_search_1:9200/',
'INDEX_NAME': 'app',
},
}
BROKER_URL = 'redis://docker_cache_1:6379/0'
CELERY_RESULT_BACKEND = BROKER_URL
Ora l'errore di connessione al database non c'è più, ma l'uscita del mio server Django mi dà questo:
a6993f56e61e:python -u /opt/project/manage.py runserver docker:8001 --traceback
Performing system checks...
System check identified no issues (0 silenced).
November 08, 2015 - 19:54:29
Django version 1.8.6, using settings 'core.settings.dev'
Starting development server at http://docker:8001/
Quit the server with CONTROL-C.
Error: [Errno -2] Name or service not known
Process finished with exit code 1
Nessuna traccia di stack, solo questo.
Cosa c'è di strano: python -u /opt/project/manage.py
- che cos'è questo? La cartella non esiste sia sull'host che sul contenitore.
mio Django Server conf:
ho provato anche una conf puro-python in questo modo:
Questo è come mega-confusione perché cerca di nuovo per connettersi tramite il collegamento "database", anche se lo rimuovo dalle impostazioni.
Quali sarebbero i prossimi passi per il debug?
Domanda bonus: pyCharm riconosce i pacchetti installati nelle impostazioni del progetto, ma non riesce a trovarlo nel codice, perché?
UPDATE
ho scoperto che PyCharm sta iniziando il contenitore per sé e non utilizza il contenitore finestra mobile esistente. Quindi sembra che pyCharm possa funzionare solo con un singolo contenitore, che non sembra affatto utile.
hanno aggiornato la mia risposta dato che ora ho un ambiente docker-compose funziona molto bene in pycharm con debug completo/test/gestire il supporto dei comandi. Penso che ce ne sia quasi nella configurazione, eccetto che non usare i nomi brevi di composizione docker invece di utilizzare una variabile di ambiente nell'istanza della macchina mobile. – dalore