私がオープンするとYMLファイルがにドッキングウィンドウは、構成可能にするためにどのように見えるか、特定のポートがある場合、それはhttps://postgresapp.com/ドッキングアプリをローカルに稼動するポストグルにどのように接続しますか?
経由思っていたのPostgresデータベースにアクセスできるようにドッキングウィンドウコンテナアプリを接続する方法を探していますローカルに動作するポストグルを使用して作業します。
ありがとうございます!
私がオープンするとYMLファイルがにドッキングウィンドウは、構成可能にするためにどのように見えるか、特定のポートがある場合、それはhttps://postgresapp.com/ドッキングアプリをローカルに稼動するポストグルにどのように接続しますか?
経由思っていたのPostgresデータベースにアクセスできるようにドッキングウィンドウコンテナアプリを接続する方法を探していますローカルに動作するポストグルを使用して作業します。
ありがとうございます!
コンテナの内側またはコンテナの外側からデータベースにアクセスすることに違いはありません。
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を指定してください。
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の設定ファイルに変更を加える必要はあり))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アドレスを使用して、ホストで実行中のポスチャに接続します。
Postgresをコンテナに入れる方法や、アプリケーションコンテナから既存のPostgresデータベースにアクセスする方法を尋ねていますか? – DJO3
@ DJO3 The Latter。 DBが同じマシン上でローカルにホストされているアプリケーションコンテナからDBにアクセスするにはどうすればよいですか。 – user805981