2016-02-09 103 views
0

我在Microsoft Azure上創建了一個Ubuntu 15.10虛擬機。 在服務器我創建了一個碼頭工人容器與MySQL運行(IP:172.17.0.2)在Microsoft Azure虛擬機中連接到Docker容器內的MySQL服務器

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
4255233555db  mysql    "/entrypoint.sh mysql" 16 hours ago  Up 16 hours   0.0.0.0:3306->3306/tcp compose_mysql_1 

我可以ssh連接到虛擬機,然後訪問MySQL-Server中的泊塢窗容器中運行。

我現在想從外部訪問MySQL服務器,以便我的Microsoft Azure上的WebApp(同一個Ressource Group)可以連接到數據庫。

我已經將VM的端口3306轉發到172.17.0.2:3306。

從本地PC的MySQL-Workbench中,我無法連接到MySQL服務器。 事實上,我不確定我需要提供什麼憑據來連接。 我試着用VM的公共IP和MySQL服務器的根密碼。但是,我不應該在某處爲VM提供密碼和用戶嗎?

回答

0

直接使用官方MySQL映像的替代方案

我也遇到了運行和訪問官方MySQL映像的麻煩。 sameersbn/docker-mysql提供了一個很好很容易的包裝,可以讓你指定要設置的用戶和數據庫。

我的搬運工,撰寫文件具有以下部分:

db: 
    image: sameersbn/mysql:latest 
    volumes: 
    - /opt/mysql/data:/var/lib/mysql 
    environment: 
    - DB_USER=${DB_USER} 
    - DB_PASS=${DB_PASS} 
    - DB_NAME=theDatabaseName 
    ports: 
    - "3306:3306" 

細節:

  • image - 上面提到的包裝。
  • volumes - 映射持久主機上的數據。
  • environment - 定義數據庫設置的變量。或者通過DB_NAME提供純文本,或通過${...}語法訪問環境變量。
  • ports - 映射出主機上的端口3306,以便遠程訪問它。
1

除了實際VM上的防火牆之外,Azure使用單獨的VPC網絡安全組管理端口安全。默認情況下,與虛擬機關聯的網絡組不允許端口3306上的入站TCP連接。你必須手動添加:

  1. 轉到Network interfaces

Pic 1

  • 選擇網絡接口
  • enter image description here

    1. 選擇Network security group

    enter image description here

  • 選擇您的組(通常僅一個在這裏)
  • enter image description here

  • 請選擇Inbound security rules
  • enter image description here

  • 按此Add和填充作爲遵循
  • enter image description here

  • 最後應用更改並等待1-2分鐘(新設置傳播正確的時間,雖然它應該是即刻)
  • enter image description here

    魔法!

    相關問題