質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

3回答

3722閲覧

djangoがDBにつながらない

tobitti

総合スコア14

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/03/17 18:49

編集2019/03/17 18:51

前提・実現したいこと

Dockerでdjangoの環境構築がしたい。
ただし環境上ではすでにwordpress(mariaDB(port:3306)あり)が動いており、djangoのmariaDBのポートを3307に変更し運用したい。
また、nginx-proxy,letssencryptを用いてサブドメインでアクセスできるようにしたい。

参考サイト様

https://qiita.com/NickelCreate/items/bed3dc9d088b57127ba7

該当のソースコード

ほとんど参考サイト様のままのコードです。
変更点はサブドメインの対応とssLの対応のみです。
以下変更箇所

# $ cat docker-compose.yml version: '3.4' volumes: django.db.volume: name: django.db.volume services: nginx: #ポートの削除+サブドメインとSSLの追加。 image: nginx container_name: django.nginx environment: VIRTUAL_HOST: python.XXXXX.net LETSENCRYPT_HOST: python.XXXXX.net  LETSENCRYPT_EMAIL: aaaa@bbb.com volumes: - ./nginx/conf:/etc/nginx/conf.d - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params - ./static:/static - ./nginx/log:/var/log/nginx depends_on: - web db: #ポートを3307へ変更 image: mariadb container_name: django.db ports: - 3307:3306 environment: MYSQL_ROOT_PASSWORD: password TZ: 'Asia/Tokyo' volumes: - django.db.volume:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d web: build: ./web container_name: django.web command: uwsgi --ini /code/sugoi_site/django.ini volumes: - ./src:/code - ./static:/static expose: - "8001" depends_on: - db networks: #別のcomposeで動かしているnginx-proxyとletsencryptのネットワークへつなぐ default: external: name: ssl-proxy
# ./src/sugoi_site/settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'sugoi_site', 'USER': 'root', 'PASSWORD': 'password', 'HOST': 'db', 'PORT': '3307', # ポートの変更 'OPTIONS': { 'charset': 'utf8mb4', }, } }

これがnginx-proxyとletsencryptです。
wordpressや他で動いているphpなどがこのネットワークに所属し、証明書などが保存されるようになっています。

$ cat ~/nginx-proxy/docker-compose.yml version: "2" services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./certs:/etc/nginx/certs:ro - /etc/nginx/vhost.d - /usr/share/nginx/html - ./conf.d:/etc/nginx/conf.d - ./log:/var/log/nginx restart: always networks: - ssl-proxy letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./certs:/etc/nginx/certs:rw volumes_from: - nginx-proxy restart: always networks: - ssl-proxy networks: ssl-proxy: external: true

これでいけると思ったんですが...

発生している問題・エラーメッセージ

$ docker-compose run web ./manage.py makemigrations Creating network "django_django_default" with the default driver Creating volume "django.db.volume" with default driver Creating django.db ... done Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 194, in connect self.connection = self.get_new_connection(conn_params) File "/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection return Database.connect(**conn_params) File "/usr/local/lib/python3.7/site-packages/MySQLdb/__init__.py", line 84, in Connect return Connection(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/MySQLdb/connections.py", line 164, in __init__ super(Connection, self).__init__(*args, **kwargs2) MySQLdb._exceptions.OperationalError: (2003, 'Can\'t connect to MySQL server on \'db\' (111 "Connection refused")') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "./manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 316, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 353, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped res = handle_func(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py", line 103, in handle loader.check_consistent_history(connection) File "/usr/local/lib/python3.7/site-packages/django/db/migrations/loader.py", line 281, in check_consistent_history applied = recorder.applied_migrations() File "/usr/local/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 61, in applied_migrations if self.has_table(): File "/usr/local/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 44, in has_table return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()) File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 255, in cursor return self._cursor() File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 232, in _cursor self.ensure_connection() File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 194, in connect self.connection = self.get_new_connection(conn_params) File "/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection return Database.connect(**conn_params) File "/usr/local/lib/python3.7/site-packages/MySQLdb/__init__.py", line 84, in Connect return Connection(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/MySQLdb/connections.py", line 164, in __init__ super(Connection, self).__init__(*args, **kwargs2) django.db.utils.OperationalError: (2003, 'Can\'t connect to MySQL server on \'db\' (111 "Connection refused")')

DBにつながらないというエラーですよね...

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES XXXXXXXXXXXX nginx "nginx -g 'daemon of…" 8 minutes ago Up 8 minutes 80/tcp django.nginx XXXXXXXXXXXX django_web "uwsgi --ini /code/s…" 8 minutes ago Up 8 minutes 8001/tcp django.web XXXXXXXXXXXX mariadb "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:3307->3306/tcp django.db XXXXXXXXXXXX nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp wp.nginx XXXXXXXXXXXX wordpress:5.1-php7.3-fpm "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:9000->9000/tcp wp XXXXXXXXXXXX mariadb "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp wp.db XXXXXXXXXXXX nginx "nginx -g 'daemon of…" 3 hours ago Up 3 hours 80/tcp php.nginx XXXXXXXXXXXX php:7.3-fpm "docker-php-entrypoi…" 3 hours ago Up 3 hours 9000/tcp php XXXXXXXXXXXX jrcs/letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" 20 hours ago Up 20 hours letsencrypt XXXXXXXXXXXX jwilder/nginx-proxy "/app/docker-entrypo…" 20 hours ago Up 20 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-proxy

とりあえず、PHP、Wordpress、djangoの動いている状態での表示です。

試したこと

まっさらなLinux環境を作成し、手を加えない参考サイト様の状態で動かしたところ正常に動作しました。
また、正常に動いたもののMariaDBのportを3307にかえ、settings.pyのポートを3307にしたところ同じエラーが出ました。
しかし、settings.pyを3306にしたところ正常に繋がりました。(0.0.0.0:3307->3306/tcpの右側のportでつながる?)
それをもとに、動かない環境でも3306にしてみるも変化ありませんでした。(Wordpressのがあるから当然?)

一応、この状態でサブドメインにアクセスしたところ、djangoのインストール完了画面は表示されます。(ロケットの飛んでいる画面)
adminにアクセスして、適当にユーザーとパスを打つとDBにつながらない旨のエラー画面に行きます。
(正常に動いている環境下ではユーザーとパスが一致しない旨の表示が出るだけ。)

ほか

業務等ではなく、趣味でAWS lightsailで触っています。
docker,nginx,djangoいずれも最近触り始めたばかりで知識がありません。
mariaDBを外に出してwordpressとdjangoをまとめて管理するのが良いのでしょうか?
そういった点でのご指摘も大歓迎です。
また、不足している情報があればお申し付けください。
もし馬鹿なことをしていましたらご教示ください。(lightsail安いんだからdockerなんて使うなってのはご遠慮ください...)
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/03/18 01:54

dbでアクセスしているからだと思います。3307は、dockerのホストへのポートマッピングをしているので、ホストに対して3307アクセスしないと意味がありません。
tobitti

2019/03/19 12:59

ありがとうございます。 dbで複数あるmariadbの一つにアクセスできればと考えているのですが無理でしょうか。
t_obara

2019/03/20 02:56

dbは一つのmariadbを立ち上げているのではないですか?そうであるなら、db1、db2といった形になるのでは?。そうでないなら、ポートを分けないと立ち上がらないので、そのポートを指定すれば良いだけです。dockerのポートマッピングとは違います。
tobitti

2019/03/20 06:31

dyoshikawaさんのコメントにはお書きしていたのですが、別コンテナですが、wordpressとdjangoの両コンテナでDBを起動しています。 しかし、片方のコンテナを起動し、もう片方のコンテナを起動すると あとから起動したDBには ''' django.db | double free or corruption (out) django.db | 190320 0:38:46 [ERROR] mysqld got signal 6 ; django.db | This could be because you hit a bug. It is also possible that this binary django.db | or one of the libraries it was linked against is corrupt, improperly built, django.db | or misconfigured. This error can also be caused by malfunctioning hardware. django.db | django.db | To report this bug, see https://mariadb.com/kb/en/reporting-bugs django.db | django.db | We will try our best to scrape up some info that will hopefully help django.db | diagnose the problem, but since we have already crashed, django.db | something is definitely wrong and this may fail. django.db | django.web | [uWSGI] getting INI configuration from /code/django_main/django.ini django.db | Server version: 10.3.13-MariaDB-1:10.3.13+maria~bionic django.db | key_buffer_size=134217728 django.db | read_buffer_size=2097152 django.db | max_used_connections=0 django.db | max_threads=102 django.db | thread_count=0 django.db | It is possible that mysqld could use up to django.db | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 760012 K bytes of memory django.db | Hope that's ok; if not, decrease some variables in the equation. django.db | django.db | Thread pointer: 0x0 django.db | Attempting backtrace. You can use the following information to find out django.db | where mysqld died. If you see no messages after this, something went django.db | terribly wrong... django.db | stack_bottom = 0x0 thread_stack 0x49000 ''' というエラーメッセージを残して正常に起動せず接続できないようです。 djagoのコンテナには一つしかdbは存在していません。
guest

回答3

0

あまりログを追いかけていないので、見当違いの回答でしたら、そっと低評価願います。

MySQLの起動が遅いため、entrypointでDBアクセス等を行うと、失敗するという事象を確認しています。
※depends_onを記載しているにも関わらず、connection refused等になる
※公式側でスピンアップするまでentrypointをブロックしてほしい...あと、コレのmongodb版がさっぱり思い浮かばないから結構困っている
そのため、対象の処理を始める前にMySQL(mariadb)への接続確認を行った上で実行するという手順を実施した記憶があります。

github.com/indication/docker-cacti/blob/master/cacti/entrypoint.sh

※上記コードは一部バグがありますので、以下を参考にしていただければと存じます(20秒眠る予定が10秒しか眠らない)

# ${DB_HOST}や${DB_USERNAME}...等は適切に書き換えてください。コンテナにmysqlコマンドがインストールされている必要があります MYSQLCMDBASE="mysql --host=${DB_HOST} --port=${DB_PORT:-3306} -ns --user=${DB_USERNAME} --password=${DB_PASSWORD} --database=${DB_DATABASE}" # 接続できるまで待機する for i in `seq 1 20` do $MYSQLCMDBASE -w --connect-timeout=1000 -e "SELECT 'OK';" if [ $? -eq 0 ]; then break fi if [ $i -eq 20 ]; then echo "Failed to access ${DB_HOST}:${DB_PORT:-3306}" exit 1 fi sleep 3 done

投稿2019/03/22 19:35

testset

総合スコア221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

testset

2019/11/13 17:32

単純にrestart: alwaysで良いのではないかと最近は思っています。 ただ、正攻法とは異なるので別の方法を探っている。
guest

0

しかし、settings.pyを3306にしたところ正常に繋がりました。(0.0.0.0:3307->3306/tcpの右側のportでつながる?)

ports はホスト-コンテナ間のポートフォワードを設定するもので、コンテナ-コンテナ間のポートの設定は expose で行います。

このブログ とか参考になるんじゃないでしょうか。

つまり ports の設定はwebコンテナとdbコンテナ間の通信には関係ないと思います。

このあたりを踏まえて再試行して下さい。

投稿2019/03/18 01:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tobitti

2019/03/19 13:02 編集

回答ありがとうございます。 exposeがコンテナ同士のポートであるといただき、exposeの設定を試みました。 ``` db: image: mariadb container_name: django.db expose: - 33307 ports: - 3307:3307 environment: MYSQL_ROOT_PASSWORD: password TZ: 'Asia/Tokyo' volumes: - django.db.volume:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d ``` このようにしたところ、docker psでは ``` 3306/tcp, 0.0.0.0:3307->3307/tcp ``` となってしまいました。一応実行したところ結果としては上記と全く同じエラーでした。 外向きを3307にしているのが行けないのかと思い3308にしましたが、 ``` 3306/tcp, 0.0.0.0:3308->3307/tcp ``` 変わらず3306が存在していました。これはDockerfileの中にあるEXPOSESだと考え、 公式のDockerfileをgit cloneし、その中のEXPOSEを書き換えてdocker-composeからbuildさせました。 https://github.com/docker-library/mariadb ``` db: build: ./mariadb # ./mariadb にgitcloneしたDockerfile+docker-entrypoint.shを配置(EXPOSES書き換え済み) container_name: django.db environment: MYSQL_ROOT_PASSWORD: password TZ: 'Asia/Tokyo' volumes: - django.db.volume:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d ``` ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES XXXXXXXXXXXX django_db "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 3307/tcp django.db (以下略) ``` うまく3307にできたのですが、この状態でも同様のエラーが出ます。 docker-compose up を実行してみたところ、 ``` Version: '10.4.3-MariaDB-1:10.4.3+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution ``` と出ていました...中は3306で動いているようですので、my.confを作成し、中に ``` [client] port = 3307 [mysqld] port = 3307 ``` と記載し、Dockerfileに ``` COPY my.conf /etc/my.conf ``` と追加し、docker-compose up を実行してみたところ、 ```こ django.db | Version: '10.4.3-MariaDB-1:10.4.3+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution # ↑ポートが0になっているので再起動↓がかかった? django.db | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. 略 django.db | 2019-03-19 21:43:53 0 [Note] mysqld (initiated by: unknown): Normal shutdown 略 django.db | Version: '10.4.3-MariaDB-1:10.4.3+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution # ↑再起動後は結局3306になる ``` となってしまい、結局3306で起動しているようです。 (質問に追記しようと思ったのですが文字数オーバーのようです。) なにか間違っているのでしょうか。よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2019/03/19 14:42

コメントと質問文を再読したのですがなぜ3307に変えたいのかがわかりませんでした。 wordpress用のdbとdjango用のdbは別のコンテナですよね?であれば両方3306で問題起きないんじゃないでしょうか。
tobitti

2019/03/19 17:08 編集

ありがとうございます。 3306のデフォルトの状態だとdjangoのコンテナを起動して、wordpressのコンテナを起動すると ''' wp.db | 190320 0:14:59 [ERROR] mysqld got signal 6 ; wp.db | This could be because you hit a bug. It is also possible that this binary wp.db | or one of the libraries it was linked against is corrupt, improperly built, wp.db | or misconfigured. This error can also be caused by malfunctioning hardware. wp.db | wp.db | To report this bug, see https://mariadb.com/kb/en/reporting-bugs wp.db | wp.db | We will try our best to scrape up some info that will hopefully help wp.db | diagnose the problem, but since we have already crashed, wp.db | something is definitely wrong and this may fail. wp.db | wp.db | Server version: 10.3.13-MariaDB-1:10.3.13+maria~bionic wp.db | key_buffer_size=134217728 wp.db | read_buffer_size=2097152 wp.db | max_used_connections=0 wp.db | max_threads=102 wp.db | thread_count=0 wp.db | It is possible that mysqld could use up to wp.db | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 760012 K bytes of memory wp.db | Hope that's ok; if not, decrease some variables in the equation. wp.db | wp.db | Thread pointer: 0x0 wp.db | Attempting backtrace. You can use the following information to find out wp.db | where mysqld died. If you see no messages after this, something went wp.db | terribly wrong... wp.db | stack_bottom = 0x0 thread_stack 0x49000 ''' となりwordpress側のdbが正常に動作していません。 逆にwordpressのdbを起動してからdjangoを起動すると ''' django.db | double free or corruption (out) django.db | 190320 0:38:46 [ERROR] mysqld got signal 6 ; django.db | This could be because you hit a bug. It is also possible that this binary django.db | or one of the libraries it was linked against is corrupt, improperly built, django.db | or misconfigured. This error can also be caused by malfunctioning hardware. django.db | django.db | To report this bug, see https://mariadb.com/kb/en/reporting-bugs django.db | django.db | We will try our best to scrape up some info that will hopefully help django.db | diagnose the problem, but since we have already crashed, django.db | something is definitely wrong and this may fail. django.db | django.web | [uWSGI] getting INI configuration from /code/django_main/django.ini django.db | Server version: 10.3.13-MariaDB-1:10.3.13+maria~bionic django.db | key_buffer_size=134217728 django.db | read_buffer_size=2097152 django.db | max_used_connections=0 django.db | max_threads=102 django.db | thread_count=0 django.db | It is possible that mysqld could use up to django.db | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 760012 K bytes of memory django.db | Hope that's ok; if not, decrease some variables in the equation. django.db | django.db | Thread pointer: 0x0 django.db | Attempting backtrace. You can use the following information to find out django.db | where mysqld died. If you see no messages after this, something went django.db | terribly wrong... django.db | stack_bottom = 0x0 thread_stack 0x49000 ''' となり正常に動作していません。 いずれも片方はきちんと動作します。 こうなってしまうのはコンテナ側の3306がおなじだからと考え他に変更しなければいけないのかと考えていました。 この件についてもなにかわかるようでしたらよろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2019/03/20 01:53

手元で実験したところ、 version: "3" services: db1: image: mysql ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: secret db2: image: mysql ports: - 3307:3306 environment: MYSQL_ROOT_PASSWORD: secret このように書きましたが両方共立ち上がりますね。 portsのホスト側ポートだけずらせば問題ないです。
退会済みユーザー

退会済みユーザー

2019/03/20 01:55

まとめると、 portsのホスト側ポートが重複するとエラーになる exposeのポートが重複するのは問題ない です。
tobitti

2019/03/20 06:27

ホスト側は違う状態(3306、3307)で別コンテナですが私の環境だと上のコメントのエラーが出てしまいます。 私の環境が特別なにかおかしいのかもしれないということですね。 3回は環境ごと作り直しても変わらずのエラーでしたのでコンテナ側ポートが問題なのかと考えていました。
退会済みユーザー

退会済みユーザー

2019/03/20 06:44

私の手元ではmariadbで試してもクラッシュしないですね。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e93aabb5f417 mariadb "docker-entrypoint.s…" 49 seconds ago Up 44 seconds 0.0.0.0:3307->3306/tcp test_db2_1 f6d8267f9d97 mariadb "docker-entrypoint.s…" 49 seconds ago Up 45 seconds 0.0.0.0:3306->3306/tcp test_db1_1
退会済みユーザー

退会済みユーザー

2019/03/20 06:45

問題を切り分けるために私と同じ単純な検証をやってみれば良いと思います。
退会済みユーザー

退会済みユーザー

2019/03/20 06:48

あと volumes: - django.db.volume:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d このdbのボリュームマウントを一切外して検証してみて下さい。
tobitti

2019/03/20 07:14

db2_1 | Version: '10.3.13-MariaDB-1:10.3.13+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution db1_1 | Version: '10.3.13-MariaDB-1:10.3.13+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution 同一コンテナでご提示いただいた単純なdb2つだけの検証を行ってみました。(他のDBは止めている状態で)結果、問題なく動くようです。 wordpressとdjangoのボリュームマウントを外して(docker-compose down -vしてから)起動させてみましたが、やはりあとから起動したdbがうまく起動しないようです。(同様のエラーでした。)
退会済みユーザー

退会済みユーザー

2019/03/20 08:37

ということはやはりDBのポート重複は原因ではないと思われますね。ちょっとその先は手元で操作しながらの調査が必要だと思いますので私からは何も言えないです。
guest

0

自己解決

皆様回答有り難うございます。
dockerのコンテナのメモリ使用容量を見ていたところ、1つ目に起動したdbはメモリを多く使用している事に気が付きました。

私は趣味や単なる好奇心からlightsailを始めており、一番安価なメモリが512MBしかないプランを使用していました。

もしかしてメモリが足りないのでは...と思いこちらのサイトをもとにswap領域を増やしました。

その結果うまく動きました。
初歩的な問題で申し訳ありません。

詳しく丁寧に様々なことをお教えいただきました、dyoshikawaさん、
自身の経験からアドバイスをいただきました、testsetさん。
ありがとうございました。
また何かつまずくようなことがあればここで質問することもあるかと思います。
機会がございましたらまたご回答いただければと思います。
本当にありがとうざいました。

投稿2019/04/02 11:49

tobitti

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問