2017-12-08 6 views
1

私がオープンするとYMLファイルがにドッキングウィンドウは、構成可能にするためにどのように見えるか、特定のポートがある場合、それはhttps://postgresapp.com/ドッキングアプリをローカルに稼動するポストグルにどのように接続しますか?

経由思っていたのPostgresデータベースにアクセスできるようにドッキングウィンドウコンテナアプリを接続する方法を探していますローカルに動作するポストグルを使用して作業します。

ありがとうございます!

+0

Postgresをコンテナに入れる方法や、アプリケーションコンテナから既存のPostgresデータベースにアクセスする方法を尋ねていますか? – DJO3

+0

@ DJO3 The Latter。 DBが同じマシン上でローカルにホストされているアプリケーションコンテナからDBにアクセスするにはどうすればよいですか。 – user805981

答えて

-1

コンテナの内側またはコンテナの外側からデータベースにアクセスすることに違いはありません。

Postgresデータベースがlocalhostで実行されているとします。あなたは小さなPythonスクリプトから、それに接続したい場合は、次のようにそうすることができ、Docsで見られるよう:

#!/usr/bin/python 
import psycopg2 
import sys 

def main(): 
    #Define our connection string 
    conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'" 

    # print the connection string we will use to connect 
    print "Connecting to database\n ->%s" % (conn_string) 

    # get a connection, if a connect cannot be made an exception will be raised here 
    conn = psycopg2.connect(conn_string) 

    # conn.cursor will return a cursor object, you can use this cursor to perform queries 
    cursor = conn.cursor() 
    print "Connected!\n" 

if __name__ == "__main__": 
    main() 

このスクリプトを実行するためには、あなたの地元でPythonとpsycopg2をインストールする必要がありますおそらく仮想環境内に存在します。あるいは、それをコンテナに入れることもできます。手動ですべてをインストールするのではなく、インストール手順でDockerファイルを定義します。これはおそらく、このようなものになります。

FROM python:latest 
ADD python-script.py /opt/www/python-script.py 
RUN pip install psycopg2 
CMD ["python", "/opt/www/python-script.py"] 

をそして、我々が構築して実行する場合...

dave-mbp:Desktop dave$ ls -la 
-rw-r--r-- 1 dave staff 135 Dec 8 19:05 Dockerfile 
-rw-r--r-- 1 dave staff 22 Dec 8 19:04 python-script.py 

dave-mbp:Desktop dave$ docker build -t python-script . 
Sending build context to Docker daemon 17.92kB 
Step 1/4 : FROM python:latest 
latest: Pulling from library/python 
85b1f47fba49: Already exists 
ba6bd283713a: Pull complete 
817c8cd48a09: Pull complete 
47cc0ed96dc3: Pull complete 
4a36819a59dc: Pull complete 
db9a0221399f: Pull complete 
7a511a7689b6: Pull complete 
1223757f6914: Pull complete 
Digest: sha256:db9d8546f3ff74e96702abe0a78a0e0454df6ea898de8f124feba81deea416d7 
Status: Downloaded newer image for python:latest 
---> 79e1dc9af1c1 
Step 2/4 : ADD python-script.py /opt/www/python-script.py 
---> 21f31c8803f7 
Step 3/4 : RUN pip install psycopg2 
---> Running in f280c82d74e7 
Collecting psycopg2 
    Downloading psycopg2-2.7.3.2-cp36-cp36m-manylinux1_x86_64.whl (2.7MB) 
Installing collected packages: psycopg2 
Successfully installed psycopg2-2.7.3.2 
---> bd38f911bb6a 
Removing intermediate container f280c82d74e7 
Step 4/4 : CMD python /opt/www/python-script.py 
---> Running in 159b70861893 
---> 4aa783be5c90 
Removing intermediate container 159b70861893 
Successfully built 4aa783be5c90 
Successfully tagged python-script:latest 

dave-mbp:Desktop dave$ docker run python-script 
>> Connected! 

コンテナは、主にパッケージングソリューションです。あたかもコンテナの外からすべてを実行しているかのように、外部データベースまたはAPIエンドポイントに接続することができます。

ただし、ドッカーツールボックス/バーチャルボックスを使用している場合、localhostは仮想マシンに解決される可能性があります。その場合、VM内でブリッジネットワーク接続を実行していない限り、localhostに接続しないでください。それ以外の場合は、localhostの代わりにホストIPを指定してください。

-1

Postgresのデフォルトポートは5432です。

Dockerは異なるnetworking modesを提供しています。ブリッジモード(デフォルトで使用)を使用して目標を達成する方法を教えてください。

常にホストマシンにアクセスできるブリッジネットワークがあります。これはデフォルトで作成され、docker0と呼ばれます。

端末ip addr show docker0で次のコマンドを実行すると、実行しているすべてのコンテナで使用可能なホストIPが表示されます。私のマシンで

出力:

[email protected]:~$ ip addr show docker0 
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:b4:95:60:89 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 

したがって、あなたはちょうどあなたが見たIPアドレスにごDBホストを設定する必要がドッキングウィンドウ-compose.yml 内の任意の追加の設定は必要ありません。私の場合は172.17.0.1となります。

ローカルにインストールされたPostgresが別のポートをリッスンする場合は、アプリケーション設定でそのポートを指定してください。 2 pg_hba.confのあなたは

1特に

、ホストマシンでPostgresの設定ファイルに変更を加える必要はあり

0

))postgres.conf

あなたは/に/ var/libに/ postgresqlの構成上見つけることができます[バージョン] /パス

最初にdocker0ブリッジのインターフェイスを確認してください。172.17.0.0/16の場合はそれに応じて変更してください。

postgresql.confのパスを変更すると、pg_hba.confと同じになります。

ListenAddressをに "*"

次にpg_hba.confの中で

ホストとしてすべてすべて172.17.0.0/16 MD5をルールを追加します。

次に、ドッカーアプリケーションでホストのIPアドレスを使用して、ホストで実行中のポスチャに接続します。

関連する問題