artefactual-labs / am

Development environment for Archivematica
https://archivematica.org
GNU Affero General Public License v3.0
10 stars 20 forks source link

Cannot connect to mysql #47

Closed cdekok closed 6 years ago

cdekok commented 6 years ago

The archivematica user seems to be missing in the docker-compose file but even if I add it when I go to the application it will complain that it cannot connect.

The configured IP is incorrect 172.28.0.11 instead of 172.28.0.5 it would probably be better if it just used the hostname mysql what is the best place to configure it?


archivematica-dashboard_1        | Traceback (most recent call last):
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 56, in handle
archivematica-dashboard_1        |     self.handle_request(listener_name, req, client, addr)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 152, in handle_request
archivematica-dashboard_1        |     super(GeventWorker, self).handle_request(*args)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 107, in handle_request
archivematica-dashboard_1        |     respiter = self.wsgi(environ, resp.start_response)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 170, in __call__
archivematica-dashboard_1        |     self.load_middleware()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 52, in load_middleware
archivematica-dashboard_1        |     mw_instance = mw_class()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/middleware/locale.py", line 24, in __init__
archivematica-dashboard_1        |     for url_pattern in get_resolver(None).url_patterns:
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 401, in url_patterns
archivematica-dashboard_1        |     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 395, in urlconf_module
archivematica-dashboard_1        |     self._urlconf_module = import_module(self.urlconf_name)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
archivematica-dashboard_1        |     __import__(name)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
archivematica-dashboard_1        |     result = _import(*args, **kwargs)
archivematica-dashboard_1        |   File "/src/dashboard/src/urls.py", line 27, in <module>
archivematica-dashboard_1        |     url(r'^fpr/', include('fpr.urls')),
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 33, in include
archivematica-dashboard_1        |     urlconf_module = import_module(urlconf_module)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
archivematica-dashboard_1        |     __import__(name)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
archivematica-dashboard_1        |     result = _import(*args, **kwargs)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/fpr/urls.py", line 2, in <module>
archivematica-dashboard_1        |     from fpr import views
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
archivematica-dashboard_1        |     result = _import(*args, **kwargs)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/fpr/views.py", line 17, in <module>
archivematica-dashboard_1        |     from fpr import forms as fprforms
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/gevent/builtins.py", line 93, in __import__
archivematica-dashboard_1        |     result = _import(*args, **kwargs)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/fpr/forms.py", line 13, in <module>
archivematica-dashboard_1        |     class FormatForm(forms.ModelForm):
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/fpr/forms.py", line 16, in FormatForm
archivematica-dashboard_1        |     choices=fprmodels.FormatGroup.objects.all()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/forms/fields.py", line 834, in __init__
archivematica-dashboard_1        |     self.choices = choices
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/forms/fields.py", line 851, in _set_choices
archivematica-dashboard_1        |     value = list(value)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 162, in __iter__
archivematica-dashboard_1        |     self._fetch_all()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 965, in _fetch_all
archivematica-dashboard_1        |     self._result_cache = list(self.iterator())
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 238, in iterator
archivematica-dashboard_1        |     results = compiler.execute_sql()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 838, in execute_sql
archivematica-dashboard_1        |     cursor = self.connection.cursor()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 162, in cursor
archivematica-dashboard_1        |     cursor = self.make_debug_cursor(self._cursor())
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 135, in _cursor
archivematica-dashboard_1        |     self.ensure_connection()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection
archivematica-dashboard_1        |     self.connect()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 98, in __exit__
archivematica-dashboard_1        |     six.reraise(dj_exc_type, dj_exc_value, traceback)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection
archivematica-dashboard_1        |     self.connect()
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 119, in connect
archivematica-dashboard_1        |     self.connection = self.get_new_connection(conn_params)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
archivematica-dashboard_1        |     conn = Database.connect(**conn_params)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
archivematica-dashboard_1        |     return Connection(*args, **kwargs)
archivematica-dashboard_1        |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 204, in __init__
archivematica-dashboard_1        |     super(Connection, self).__init__(*args, **kwargs2)
archivematica-dashboard_1        | OperationalError: (1045, "Access denied for user 'archivematica'@'172.28.0.11' (using password: YES)")
nginx_1                          | 172.28.0.1 - - [12/Mar/2018:10:36:53 +0000] "GET / HTTP/1.1" 500 141 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0" "-"```
sevein commented 6 years ago

I can't reproduce but I'll keep an eye in case I see the same error. We definitely use DNS names, e.g.:

https://github.com/artefactual-labs/am/blob/0d50e60cc8a7ac1a03df7e92f3a723887b451086/compose/docker-compose.yml#L170

cdekok commented 6 years ago

Oh yeah I saw that after only it seems like it is not used because it tries to connect to it's own ip. When i go into the container I do see an env: ARCHIVEMATICA_DASHBOARD_CLIENT_HOST=mysql but it looks like this environment is never used in the code.

➜  am-docker git:(master) ✗ grep -r 'CLIENT_HOST' .
./compose/docker-compose.yml:      ARCHIVEMATICA_MCPSERVER_CLIENT_HOST: "mysql"
./compose/docker-compose.yml:      ARCHIVEMATICA_MCPCLIENT_CLIENT_HOST: "mysql"
./compose/docker-compose.yml:      ARCHIVEMATICA_DASHBOARD_CLIENT_HOST: "mysql"
./src/archivematica/src/MCPClient/install/README.md:- **`ARCHIVEMATICA_MCPCLIENT_CLIENT_HOST`**
./src/archivematica/src/dashboard/install/README.md:- **`ARCHIVEMATICA_DASHBOARD_CLIENT_HOST`**:
./src/archivematica/src/MCPServer/install/README.md:- **`ARCHIVEMATICA_MCPSERVER_CLIENT_HOST`**:
sevein commented 6 years ago

It is definitely used but there is some meta-programming going on that makes it less obvious. See https://github.com/artefactual/archivematica/blob/qa/1.x/src/dashboard/src/settings/base.py#L50-L57 for example.

I can't imagine what could be causing the situation that you're describing. Hopefully you have a chance to debug it and let us know. Thank you!

cdekok commented 6 years ago

Sorry the application is loading correctly now I have removed the containers and started over again and it is working now, I probably skipped one of the steps.

I do get another error it seems that it expects webpack to be installed globally but the dashboard did load after restarting the services.


> webpack --progress --colors --entry ./app.js

sh: 1: webpack: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! transfer-browse@0.0.0 prepublish: `webpack --progress --colors --entry ./app.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the transfer-browse@0.0.0 prepublish script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-03-16T10_03_57_466Z-debug.log```
sevein commented 6 years ago

sh: 1: webpack: not found

@ablwr had the same issue but I couldn't reproduce, I'll file a bug.