Dockerコンテナ上でDBサーバのアドレスが解決出来ない
1つのサーバ上でweb,dbコンテナの2つを動かしているのですが
webコンテナからdbに接続出来ません
webコンテナに接続してhostsを参照してもdbコンテナが記入されてないです
docker
1version: '2' 2services: 3 web: 4 build: 5 context: ./ 6 volumes: 7 - ../app:/app/ 8 ports: 9 - 8888:8888 10 container_name: web_server 11 12 mysql: 13 image: mysql 14 volumes: 15 - /home/ubuntu/db:/var/lib/mysql 16 ports: 17 - 3306:3306 18 container_name: mysql_server 19 environment: 20 MYSQL_ROOT_PASSWORD: '*****'
また、この状態でFlask上でSQLAlchemyを実行すると
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'root'@'172.18.0.3' (using password: NO)") (Background on this error at: http://sqlalche.me/e/e3q8)
となる
SQLAlchemyにはDBユーザ名、パスワード、ホスト名(mysql_server),DB名を指定しています
ちなみに上の172.18.0.3はwebコンテナのIPであり、なぜかlocalhostのDBに接続しようとしています
ちなみにwebコンテナのDockerfileは以下
from python:3.6 RUN apt-get update RUN apt-get install -y nginx # flask RUN pip install flask uwsgi line-bot-sdk requests sqlalchemy pymysql # nginx COPY default /etc/nginx/conf.d/bot.conf RUN rm /etc/nginx/sites-available/default RUN rm /etc/nginx/sites-enabled/default # その他設定 COPY start.sh / COPY uwsgi.ini / CMD ["sh", "/start.sh"]
またwebコンテナはmyslqの公式イメージ使用しています