2015-12-17 10 views
7

bağlantılı Expose. Benim liman işçisi-compose.yml:liman işçisi-oluşturma deneyimi - Ben kurulum için bir MySQL veritabanı konteyner tarafından desteklenen bir SonarQube kabı çalışıyorum servis noktasını

sonar: 
    environment: 
    - SONARQUBE_USER=sonar 
    - SONARQUBE_PASSWORD=sonar 
    - SONARQUBE_DATABASE=sonar 
    - SONARQUBE_JDBC_URL=jdbc:mysql://db:3306/sonar?useUnicode=true&characterEncoding=utf8 
    build: . 
    ports: 
    - "19000:9000" 
    - "19306:3306" 
    links: 
    - db 
db: 
    environment: 
    - MYSQL_ROOT_PASSWORD=root-secret 
    - MYSQL_USER=sonar 
    - MYSQL_PASSWORD=sonar 
    - MYSQL_DATABASE=sonar 
    image: mysql 

ports bölümde ben SonarQube (web arayüzü) ve port 3306 (MySQL bağlantı) hem port 9000 maruz çalışıyorum.

bağlı bir hizmet (örneğin, bu durumda db gibi) bir bağlantı noktası ortaya örneğin, "ana" kaptan için herhangi bir şekilde var sonar?

DÜZENLEME: Sadece daha iyi ihtiyaçlarımı açıklamak için, benim localhost hem portları açığa istiyorum. SonarQube koşucunun veritabanına erişmesi gerektiğinden makinemden her iki bağlantı noktasına da erişmem gerekiyor ve ben de başka bir kapsayıcı içinde değil, makinemden veritabanında da bazı sorgular çalıştırmak istiyorum.

+0

şimdi. Ama neden sadece "db" EXPOSE '' portunu Sonar için yaptığınız gibi ev sahibi ile eşleştirmiyorsunuz? Sonar, 'EXPOSE' 'db' bağlantı noktasını doğrudan kullanmaya devam edecektir, ancak localhost'tan gelen sorgunuz, 'db/ports' bölümünde belirttiğiniz bağlantı noktası değerini kullanacaktır (aşağıdaki düzenlenmiş cevaba bakın) – VonC

cevap

6

Sen gerekmez: bir hizmetten bir EXPOSE portuna (birinci bağlantı) Başka bir doğrudan görülebilir.

Bağlantı noktası eşlemesi gerekli değil (9000 için SonarQube ve 3306'dan itibaren yaptığınız gibi)
Bağlantı noktası eşlemesi, ana bilgisayardan bir konteynere erişmek için gereklidir.
Ama kaptan a (linked) container (her ikisi de aynı liman işçisi cini tarafından yönetilen), herhangi bir liman EXPOSE in its Dockerfile doğrudan erişilebilir ilan .

benim localhost hem portları açığa istiyorum. Ben SonarQube koşucu sonra veritabanına

Eh erişmesi gerektiği gibi ben, benim makineden hem limanlara erişim ihtiyacı ... db bölüm kendi port haritalama bölümü olmalıdır: Anlıyorum

db: 
    ports: 
    - "xxx:yyyy" 
+0

Nedense denedim Bu ve ben çalışmadım. Sanırım, yapılandırmamın geri kalanı çok yanlıştı, ama şimdi bir çekicilik gibi çalışıyor. Tks – resilva87

+0

Takma bir virtualenv çalışırken bu doğru mu? Bunu işe almak için görünmüyor gibi görünmüyor –

İlgili konular