sql >> Databáze >  >> RDS >> Mysql

Docker nemůže připojit aplikaci k MySQL

docker-compose ve výchozím nastavení vytvoří virtuální síť, kde se všechny kontejnery/služby v souboru skládání mohou navzájem spojit pomocí IP adresy. Pomocí links , depends_on nebo síťových aliasů, které se mohou navzájem kontaktovat podle názvu hostitele. Ve vašem případě je název hostitele název služby, ale lze jej přepsat. (viz:dokumenty )

Váš skript v my_common_package kontejner/služba by se pak měla připojit k mysql na portu 3306 podle vašeho nastavení. (nikoli localhost na portu 3306 )

Všimněte si také, že pomocí expose je nutné pouze v případě, že Dockerfile pro službu nemá EXPOSE prohlášení. Standardní mysql obrázek to již dělá.

Pokud chcete namapovat port kontejneru na localhost musíte použít ports , ale udělejte to pouze v případě, že je to nutné.

services:
   mysql:
     image: mysql:5.6
     container_name: test_mysql_container
     environment:
       - MYSQL_ROOT_PASSWORD=test
       - MYSQL_DATABASE=My_Database
       - MYSQL_USER=my_user
       - MYSQL_PASSWORD=my_password
     volumes:
       - db_data:/var/lib/mysql
     ports:
       - "3306:3306"

Zde říkáme, že port 3306 v kontejneru mysql by měl být mapován na localhost na portu 3306.

Nyní se můžete připojit k mysql pomocí localhost:3306 mimo docker. Můžete například zkusit spustit svůj testsql.py lokálně (NE v kontejneru).

Komunikace mezi kontejnery bude vždy probíhat pomocí názvu hostitele každého kontejneru. Představte si kontejnery jako virtuální stroje.

Můžete dokonce najít síťový docker-compose vytvořený pomocí docker network list :

1b1a54630639        myproject_default             bridge              local
82498fd930bb        bridge                        bridge              local

.. pak použijte docker network inspect <id> podívat se na podrobnosti.

Přidělované IP adresy kontejnerům mohou být docela náhodné, takže jediný schůdný způsob komunikace mezi kontejnery je použití názvů hostitelů.




  1. Chyba intarray Postgresql:nedefinovaný symbol:pfree

  2. Percentil hodnocení SQL

  3. Jak nastavit proměnné prostředí pro Laravel 5 na AWS EC2 s MySQL

  4. Jak vybrat poskytovatele Oracle pro aplikaci .Net?