2016-02-19 27 views
6

açılamıyor

benim erkek kedi sunucusu hem ayrı kaplarda benim MySQL sunucusuna bağlanmak için mümkün istiyorum Planı.

Sorun

Tomcat Ben mysql konteyner ile bir bağlantı kurma hakkında wordpress tutorial gelen bazı ayrıntıları kullanılan ve MySQL bağlantısını oluşturulan MySQL

bağlanamaz.

Tomcat ve mysql'nin hızı çok iyi olsa da, tomcat'in MySQL'e bağlanabilmesi mümkün görünmüyor, ayarlar yerel makinemde gayet iyi çalışıyor.

--net: "host"'u kullanmayı denedim, ancak ciddi bir hata attığından Tomcat ile çalışmaz.

Önceki cevaplar

Ben bu bir liman işçisi sorun değil bir konak biridir inanıyorum Problemimin çevirmek istiyorum bunlardan herhangi inanmıyorum rağmen hatanın olası düzeltmeleri noticed on this post a load. liman işçisi-compose.yml

web: 
    image: tomcat:7.0 
    container_name: tomcat-container 
    ports: 
    - "80:8080" 
    hostname: docker-tomcat 
    volumes: 
    - /home/webapps:/usr/local/tomcat/webapps 
    links: 
    - db 
db: 
    image: mysql 
    container_name: mysql-container 
    environment: 
    MYSQL_ROOT_PASSWORD: Mysqlpassword1 
    MYSQL_DATABASE: tracker 
    volumes: 
    - /home/mysqlDB:/var/lib/mysql 

Bu benim Context.xml from tomcat.

<Context> 
    <Resource 
     name="jdbc/tracker" type="javax.sql.DataSource" 
     maxActive="100" maxIdle="30" maxWait="10000" 
     url="jdbc:mysql://localhost:3306/tracker?useSSL=false" 
     driverClassName="com.mysql.jdbc.Driver" 
     username="root" password="mysqladmin1" 
    /> 
    <Resource 
     name="jdbc/jenkins" type="javax.sql.DataSource" 
     maxActive="100" maxIdle="30" maxWait="10000" 
     url="jdbc:mysql://localhost:3306/jenkins?useSSL=false" 
     driverClassName="com.mysql.jdbc.Driver" 
     username="root" password="mysqladmin1" 
    /> 
</Context> 

hata kodudur.

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
at databaseConnections.SQLDatabaseConnection.tableExists(SQLDatabaseConnection.java:131) 
at databaseConnections.JiraSQLDatabaseConnection.<init>(JiraSQLDatabaseConnection.java:50) 

cevap

5

db'yi "db" olarak bağladığınızda, veritabanına katılmak için localhost'u kullanamazsınız. "db"

jdbc:mysql://db:3306/tracker?useSSL=false 

Konteynerinizde, localhost sunucunuzu değil, tomcat kabınızı tasarlar. MySQL konteynerinin kendi ağı var. Eğer "db" adını beğenmezseniz

verilerden yola çıkarak, sen Exemple için farklı bir isim

ile bağlamak adlandırabilirsiniz

: içinizde, bu durumda

links: 
    - db:container-mysql 

tomcat kabı, yapabilirsin zaten çalışıyor veya ayrı DockerFile kullanarak çalıştırmak bir kap kullanıyorsanız

jdbc:mysql://container-mysql:3306/tracker?useSSL=false 
+0

ile aynı girinti düzeyinde aşağıdaki ağ yapılandırması eklemek mümkün mü: Sen olarak yeni bir ağ oluşturarak bunu yapabilir - db: localhost' gibi bir şey yapmak için geliştirme ayarlarından dağıtım ayarlarına değiştirmem gerekmiyor mu? Aksi halde çok teşekkür ederim, birazdan deneyeceğim. – jackdh

+0

Asla localhost kullanmaya çalışmıyorum. Ben localhost bir anahtar kelime olduğunu düşünüyorum. Deneyebilirsiniz, localhost çalışacaktır, ama bence yapmamalısınız. – Thibaut

+0

Aslında, sanırım "my-mysql-server" ı docker'ınızda ve bilgisayarınızda kullanmalı ve bu girişi yerel dns (/ etc/hosts) 'e eklemek için bilgisayarınızda değiştirmelisiniz – Thibaut

1

kullanmak, o zaman

kullanarak düşünebilirsiniz 210
external_links: 
    - mysql-container:db 

mysql-container adının kabınızın adı olduğunu unutmayın.Eğer docker-compose.yml tane adını bilmiyorsanız veya belirtilmeyen varsa da NAMES ile kolon harici bağlantılarda gerekir biridir

docker ps 

çalıştırarak bulabilirsiniz. :'dan sonra db sadece bir takma addır ve istediğiniz herhangi bir şey olabilir. Senin ana bilgisayarın olacak. Örneğin, veritabanını yeniden yerleştirmeden önce sunucunuz localhost idi, şimdi db olarak değiştirmelisiniz. Son olarak, aynı ağda çalışan iki konteynere sahip olduğunuzdan da emin olmalısınız.

docker network create --driver=bridge my-network 

Sonra içeride hem konteynerlerin docker-compose.yml, service

networks: 
    default: 
    external: 
     name: my-network