質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2289閲覧

Dockerを用いたPostgreSQL接続について

komeko

総合スコア8

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/03/28 04:49

編集2022/03/28 05:13

問題

VSCodeの拡張機能であるRemote -Containerを用いてpythonを用いたpostgreSQLの
操作ができる環境の作成を試み、
Dockerfile, docker-compose.ymlをにて設定し、Reopen in Containerを実行したのですが、
pythonファイルは実行できるのですが、psqlコマンドを用いてDB操作をしようとしても実行できず、
adminerにログインすることもできない状態です。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ビルドした環境上でpsqlコマンドを用いたpostgreSQL操作
  • adminerのログインに成功し、web上からのpostgreSQL操作

発生している問題・エラーメッセージ

  • psql操作を試みた時のエラー
appuser@6e0a634130c9:/workspace$ psql -h db -U postgres bash: psql: command not found

psqlコマンドを用いた時の画面

  • adminerのログインを試みた時のエラー
SQLSTATE[08006] [7] could not translate host name "database" to address: Name does not resolve

adminerログイン情報入力時画面
adminerログイン失敗時の画面

該当のソースコード

Dockerfile

1# For more information, please refer to https://aka.ms/vscode-docker-python 2FROM python:3.8-slim 3 4# Keeps Python from generating .pyc files in the container 5ENV PYTHONDONTWRITEBYTECODE=1 6 7# Turns off buffering for easier container logging 8ENV PYTHONUNBUFFERED=1 9 10# Install pip requirements 11COPY requirements.txt . 12RUN python -m pip install -r requirements.txt 13 14WORKDIR /app 15COPY . /app 16 17# Creates a non-root user with an explicit UID and adds permission to access the /app folder 18# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers 19RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app 20USER appuser 21 22# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug 23CMD ["python", "app.py"] 24 25 26#20220328:postgresqlを用いるためのpsycopg2をインストールするための記述 27RUN pip install psycopg2-binary

docker

1version: '3.4' #composeファイルフォーマットバージョン 2 3#サービス(コンテナ)の定義 4services: 5 #20220328:postgres設定 6 # postgres: 7 database: 8 image: postgres 9 ports: 10 - "5432:5432" 11 restart: always 12 environment: 13 POSTGRES_USER: postgres 14 POSTGRES_PASSWORD: postgres 15 POSTGRES_DB: db 16 POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=ja_JP.UTF-8" 17 adminer: 18 image: adminer 19 restart: always 20 depends_on: 21 - database 22 ports: 23 - "8080:8080" 24 app: 25 #20220327:appからpython3に変更 26 image: python #dockerイメージ名 27 build: 28 context: . 29 dockerfile: ./Dockerfile

試したこと

  • pipコマンドでのインストール(まず、pipコマンドが用いることができません)
  • docker psとdocker imageによる確認

docker ps

docker image

Dockerに関しての知識が浅く、質問に回答して頂くための情報が不足しているかどうかが定かでは
ないですので、もし説明不足など至らない点などがありましたら、ご指摘して頂きたいです。
ご助言宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Supernove

2022/03/28 05:05

adminerで接続するDBがMySQLになっているのでおそらくそれが原因だとおもいます。接続するDBはpostgresですよね? あと、パスワードも入っていないのが原因じゃないでしょうか?
komeko

2022/03/28 05:14

申し訳ありません。接続するDBをPostgreSQLに変更してパスワードを入力した時の画像に変更させていただきました。 ご指摘ありがとうございます。
komeko

2022/03/28 05:15

しかし、変更しても画像の通り、ログインすることができておりません。
Supernove

2022/03/28 05:17

すみません、行き違いで回答してしまいましたがちょっと確認してみます
bsdfan

2022/03/29 04:40

databaseのコンテナはちゃんと起動できていますか?logを確認してみてください。 直接の原因ではないと思いますが、volumeの設定がされていないのがあまりよろしくないと思います。
komeko

2022/03/29 17:49

ご指摘ありがとうございます。 確認させて頂きます。
guest

回答1

0

psql: command not found

これは単純な話でpostgresのCLIツールがインストールできないだけな気がするので以下の1行をDockerfileに追加すれば使えるはずです。

RUN apt-get install -y postgresql-client

php_network_getaddresses: getaddrinfo failed: Name does not resolve

これはスクショ見た感じpostgresを選択していないのとパスワードが無いので、それを解決すれば表示できる気がします。

投稿2022/03/28 05:15

Supernove

総合スコア1154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問