Closed TerminatedProcess closed 1 year ago
.env file (as downloaded)
`(appseed-docker-mysql-py3.9) mryan ~/pythondev/appseed-docker-mysql $cat .env
DEBUG=True
SERVER=.appseed.us
ASSETS_ROOT=/static/assets
DB_ENGINE=mysql DB_USERNAME=root DB_PASS=root DB_HOST=mysql_db (appseed-docker-mysql-py3.9) mryan ~/pythondev/appseed-docker-mysql`
Uncommented migrate command in Dockerfile.. Results:
[7/7] RUN python manage.py migrate:
0 6.745 Traceback (most recent call last):
0 6.745 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
0 6.745 self.connect()
0 6.745 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.745 return func(*args, **kwargs)
0 6.745 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
0 6.746 self.connection = self.get_new_connection(conn_params)
0 6.746 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.746 return func(*args, **kwargs)
0 6.746 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection
0 6.746 connection = Database.connect(**conn_params)
0 6.746 File "/usr/local/lib/python3.9/site-packages/MySQLdb/init.py", line 123, in Connect
0 6.746 return Connection(*args, **kwargs)
0 6.746 File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in init
0 6.746 super().init(*args, **kwargs2)
0 6.746 MySQLdb.OperationalError: (2005, "Unknown MySQL server host 'mysql_db' (-2)")
0 6.746
0 6.746 The above exception was the direct cause of the following exception:
0 6.746
0 6.746 Traceback (most recent call last):
0 6.747 File "/usr/src/app/manage.py", line 22, in
0 6.747 main()
0 6.747 File "/usr/src/app/manage.py", line 19, in main
0 6.747 execute_from_command_line(sys.argv)
0 6.747 File "/usr/local/lib/python3.9/site-packages/django/core/management/init.py", line 419, in execute_from_command_line
0 6.747 utility.execute()
0 6.747 File "/usr/local/lib/python3.9/site-packages/django/core/management/init.py", line 413, in execute
0 6.747 self.fetch_command(subcommand).run_from_argv(self.argv)
0 6.747 File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
0 6.748 self.execute(*args, **cmd_options)
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
0 6.748 output = self.handle(*args, **options)
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 89, in wrapped
0 6.748 res = handle_func(*args, **kwargs)
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 75, in handle
0 6.748 self.check(databases=[database])
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 419, in check
0 6.748 all_issues = checks.run_checks(
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/checks/registry.py", line 76, in run_checks
0 6.748 new_errors = check(app_configs=app_configs, databases=databases)
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/core/checks/database.py", line 13, in check_database_backends
0 6.748 issues.extend(conn.validation.check(**kwargs))
0 6.748 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 9, in check
0 6.749 issues.extend(self._check_sql_mode(**kwargs))
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
0 6.749 if not (self.connection.sql_mode & {'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES'}):
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in get
0 6.749 res = instance.dict[self.name] = self.func(instance)
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 405, in sql_mode
0 6.749 sql_mode = self.mysql_server_data['sql_mode']
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in get
0 6.749 res = instance.dict[self.name] = self.func(instance)
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 366, in mysql_server_data
0 6.749 with self.temporary_connection() as cursor:
0 6.749 File "/usr/local/lib/python3.9/contextlib.py", line 119, in enter
0 6.749 return next(self.gen)
0 6.749 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 603, in temporary_connection
0 6.750 with self.cursor() as cursor:
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.750 return func(*args, **kwargs)
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 259, in cursor
0 6.750 return self._cursor()
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 235, in _cursor
0 6.750 self.ensure_connection()
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.750 return func(*args, **kwargs)
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
0 6.750 self.connect()
0 6.750 File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 90, in exit
0 6.751 raise dj_exc_value.with_traceback(traceback) from exc_value
0 6.751 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
0 6.751 self.connect()
0 6.751 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.751 return func(*args, **kwargs)
0 6.751 File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
0 6.751 self.connection = self.get_new_connection(conn_params)
0 6.751 File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
0 6.751 return func(*args, **kwargs)
0 6.751 File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection
0 6.751 connection = Database.connect(**conn_params)
0 6.751 File "/usr/local/lib/python3.9/site-packages/MySQLdb/init.py", line 123, in Connect
0 6.751 return Connection(*args, **kwargs)
0 6.751 File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in init
0 6.752 super().init(*args, **kwargs2)
0 6.752 django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql_db' (-2)")
failed to solve: executor failed running [/bin/sh -c python manage.py migrate]: exit code: 1`
Hello @TerminatedProcess
@JK-0 please take a look.
Other note: Just in case you need to know.. I'm using Ubuntu under WSL2 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.5 LTS Release: 20.04 Codename: focal
and have MySQL service running:
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Server version 8.0.31-0ubuntu0.20.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 4 hours 40 min 11 sec
Threads: 2 Questions: 8 Slow queries: 0 Opens: 119 Flush tables: 3 Open tables: 38 Queries per second avg: 0.000
The core error is this one:
MySQLdb.OperationalError: (2005, "Unknown MySQL server host 'mysql_db' (-2)")
Bassically, the Docker DB service is not resolved at Django level.
Happy to test any fixes.
Hello @TerminatedProcess
Please pull the latest sources and follow up on the suggested setup (also listed on README):
clone repo
docker-compose up --build
docker-compose run --rm appseed-app python manage.py migrate
http://localhost:5085
in your browserLet us know the results.
The app was cross-tested on Windows WSL, and Ubuntu 18.x LTS.
Acknowledged.. sorry gone for vacation but back now.
At first I couldn't make migration work as it couldn't find the server. But I went back and created virtual environment and activated it before building the docker containers and migrating. Afterwards migration worked as expected. My final Docker container configuration looks as follows.
--Images--
REPOSITORY TAG IMAGE ID CREATED SIZE
sample-docker-django-mysql-appseed-app latest 8228dc3707a7 2 minutes ago 1.02GB
<none> <none> f4a238ac9cdb 45 minutes ago 974MB
nginx latest 88736fe82739 12 days ago 142MB
mysql 5.7 eef0fab001e8 3 weeks ago 495MB
-------------------------------------------------------
--Instances--
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e71b08844178 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp, 0.0.0.0:5085->5085/tcp nginx
e79af2f89507 sample-docker-django-mysql-appseed-app "gunicorn --config g…" 2 minutes ago Up 2 minutes appseed_app
c85433329ee2 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql_db
-------------------------------------------------------
--Volumes--
DRIVER VOLUME NAME
local 52c267a3bddff082093b5ca374d0df809729fe9bdb8ddc2e1f16baa40dd7b2f9
local cc5cccd049885ec4a6b9b6811b99a9171f4ad81a1d5f64ddb86231007e96701d
local da91465cbc942f4de893df86ff75908938e24244068b8604433240a5c4950bbe
-------------------------------------------------------
--Network--
NETWORK ID NAME DRIVER SCOPE
75ea9870fed0 bridge bridge local
9a878d35d6cc host host local
251a7abd970a none null local
def42d39b04f sample-docker-django-mysql_db_network bridge local
3f71f2c865a7 sample-docker-django-mysql_web_network bridge local
BTW, I was doing this in Ubuntu 20.04.5 LTS.
Thank you
Hello @TerminatedProcess
Glad it worked. Let us know in case you need further assistance.
Validated. Closing.
I can build with Docker-compose up --build. Going to the website with localhost:5085 throws an error.
I then tried to uncomment the python manage.py migrate command in the docker-composed.yml file. Rebuilt and build failed.
I then commented the line again and tried to build. Built successfully, but website fails. So I setup a virtual environment and did the migrate command manually. I get a failure.
`(appseed-docker-mysql-py3.9) mryan ~/pythondev/appseed-docker-mysql $python manage.py migrate Traceback (most recent call last): File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner return func(*args, kwargs) File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect self.connection = self.get_new_connection(conn_params) File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner return func(args, kwargs) File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection connection = Database.connect(conn_params) File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/MySQLdb/init.py", line 123, in Connect return Connection(args, kwargs) File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in init super().init(*args, **kwargs2) MySQLdb.OperationalError: (2005, "Unknown MySQL server host 'mysql_db' (-5)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/home/mryan/pythondev/appseed-docker-mysql/manage.py", line 22, in
main()
File "/home/mryan/pythondev/appseed-docker-mysql/manage.py", line 19, in main
execute_from_command_line(sys.argv)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/init.py", line 419, in execute_from_command_line
utility.execute()
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/init.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(*args, cmd_options)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
output = self.handle(*args, *options)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/base.py", line 89, in wrapped
res = handle_func(args, kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 75, in handle
self.check(databases=[database])
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/management/base.py", line 419, in check
all_issues = checks.run_checks(
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/checks/registry.py", line 76, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/core/checks/database.py", line 13, in check_database_backends
issues.extend(conn.validation.check(kwargs))
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 9, in check
issues.extend(self._check_sql_mode(kwargs))
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
if not (self.connection.sql_mode & {'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES'}):
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/functional.py", line 48, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 405, in sql_mode
sql_mode = self.mysql_server_data['sql_mode']
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/functional.py", line 48, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 366, in mysql_server_data
with self.temporary_connection() as cursor:
File "/home/mryan/.pyenv/versions/3.9.14/lib/python3.9/contextlib.py", line 119, in enter
return next(self.gen)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 603, in temporary_connection
with self.cursor() as cursor:
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
return func(*args, kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 259, in cursor
return self._cursor()
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 235, in _cursor
self.ensure_connection()
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
return func(*args, *kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
self.connect()
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/utils.py", line 90, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
self.connect()
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
return func(args, kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
self.connection = self.get_new_connection(conn_params)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner
return func(args, kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection
connection = Database.connect(conn_params)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/MySQLdb/init.py", line 123, in Connect
return Connection(args, *kwargs)
File "/home/mryan/pythondev/appseed-docker-mysql/.venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in init
super().init(args, **kwargs2)
django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql_db' (-5)")`