私はGoogleのクラウドSQLテストするためGolangにコードの一部を書いた:私は上記のコードをテストしてみたGoogle Cloud SQLに接続する理由はDockerコンテナ内で失敗しましたが、Dockerコンテナ外では成功しましたか?
package main
import (
"database/sql"
"flag"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
var addr = flag.String("db", "", "The database address")
func main() {
flag.Parse()
db, err := sql.Open("mysql", *addr)
if err != nil {
fmt.Println("mysql open failed: ", err)
return
}
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println("mysql ping failed: ", err)
return
}
fmt.Println("mysql ping success")
}
を、出力はその後、私がテストしたいのMySQLのping成功
ですこの次ドッカーコンテナ、Dockerfile内部機能:ドッカーイメージを構築した後
を、コンテナを実行して、私が得ました次の出力: MySQLのpingが失敗しました:エラー1045:アクセスが(パスワード使用:YES)、「user'@'my.local.ip.address「ユーザーのために拒否された
を私はすでに私の地元のことを設定しましたIPはGoogle Cloud SQLにアクセスできます。私はDockerコンテナ内で動作しないが、Dockerコンテナの外で動作する理由はわかりません。
アップデート、私は、主な違いは、Dockerfileに引用符を削除することです
FROM golang
ADD . $GOPATH/src/github.com/pdu/gcloud-sql-test
RUN go install github.com/pdu/gcloud-sql-test
CMD ["gcloud-sql-test", "-db=user:[email protected](gcloud.sql.ip.address:3306)/database"]
ためDockerfileエラーの問題を修正しました:CMDパラメーター、あなたは引用符を必要としながら、端末からプログラムを実行すると、になります。
同じアクセスが拒否されました。 – pengdu
私はコードを更新しました - これは完全なドッカーファイルです – vodolaz095
あなたが提案したのとまったく同じDockerファイルを使用しましたが、私はまだ同じアクセスが拒否されました。 Dockerコンテナがgoogle-cloud-sqlを認証するために特別なものがあると思っています。 – pengdu