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

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

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

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

PostgreSQL

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1599閲覧

docker compose で構築したpostgresのコンテナについて

退会済みユーザー

退会済みユーザー

総合スコア0

docker-compose

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

PostgreSQL

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/08/20 11:31

編集2020/08/20 13:16

発生している問題

docker compose で構築したpostgresのコンテナのデータ格納ディレクトリの権限が「postgres」になっており、アプリ側からデータを格納できません。DBを接続する際にPOSTGRES_USERに設定したユーザーでアクセスするのでエラーがでます。

version: '3' services: Core: build: ./ image: aspnetapp:Core container_name: app ports: - 80:80 environment: - ConnString postgres: container_name: my-postgres image: postgres:11.5 ports: - "5432:5432" environment: - PGDATA= /var/lib/postgresql/data/pgdata - POSTGRES_USER - POSTGRES_PASSWORD - PGPASSWORD - POSTGRES_DB - DATABASE_HOST - POSTGRES_INITDB_ARGS= --encoding=UTF-8 volumes: - ./initDB:/docker-entrypoint-initdb.d

コンテナ構築時に/var/lib/postgresql/data/pgdataにPOSTGRES_USERのユーザーを設定したいのですが、やり方がわからずに困っております。
どなたかご教授お願いします。

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

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

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

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

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

guest

回答2

0

以下のように書けます

#...省略 db: image: postgres:11.0-alpine volumes: - postgres:/var/lib/postgresql/data:cached environment: - TZ=Asia/Tokyo ports: - '5432:5432' environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_INITDB_ARGS: '--encoding=UTF-8 --locale=ja_JP.UTF-8' TZ: Asia/Tokyo #省略...

参考にしてください
DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack) - Qiita

投稿2020/08/21 13:42

naokit-dev

総合スコア424

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

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

退会済みユーザー

退会済みユーザー

2020/08/21 15:15

解決しました! 環境変数のConnStringの「""」が原因でした。 すいません、お手数かけました。。
guest

0

ベストアンサー

追記

まず、アプリケーションからのアクセスのみの問題なのか、
PostgreSQL の初期化に失敗しているのかの切り分けを行うために
docker-compose.yml の環境変数のほとんどをコメントアウトします:

yaml

1 environment: 2# - PGDATA= /var/lib/postgresql/data/pgdata 3 - POSTGRES_USER 4# - POSTGRES_PASSWORD 5# - PGPASSWORD 6# - POSTGRES_DB 7# - DATABASE_HOST 8# - POSTGRES_INITDB_ARGS= --encoding=UTF-8

そして次のコマンドを試してみるとどうなるでしょうか?

console

1docker-compose up -d 2docker-compose exec postgres psql --username=(想定するユーザー名)

うまくいった場合は、環境変数をいくつかコメントインして
再度ログインできるか確認します

上記のコマンドでログインできない場合は
PostgreSQL の初期化に失敗している可能性が高いです
次のコマンドでログを確認して怪しいメッセージが表示されていないか確認します

console

1docker-compose logs postgres

元の回答

environment の書式を誤っていませんか?

yaml

1 environment: 2 - PGDATA=/var/lib/postgresql/data/pgdata 3 - POSTGRES_USER=mysql

実行結果:

console

1$ docker-compose up -d 2Creating my-postgres ... done 3$ docker-compose exec postgres psql --username=mysql 4psql (11.5 (Debian 11.5-3.pgdg90+1)) 5Type "help" for help. 6 7mysql=#

参考: Set environment variables in containers | Environment variables in Compose | Docker Documentation

投稿2020/08/20 16:08

編集2020/08/21 12:39
y_shinoda

総合スコア3272

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

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

退会済みユーザー

退会済みユーザー

2020/08/21 11:09

どこが違ってますでしょうか?? POSTGRES_USERは環境変数を同じにすればそのまま代入せずに使える想定です。 PGDATAは半角スペースが入っていたので消去したのですが、結果変わらずでした。。
退会済みユーザー

退会済みユーザー

2020/08/21 13:36

回答ありがとうございます。 昨晩、POSTGRES_USERに設定したユーザーでコンテナに入り、ログインすることは出来ました。 ただ問題なのがpostgresコンテナの/var/lib/postgresql/(データ格納される場所)の所有者が「postgres」になっており、アプリ側でDBにアクセスできないと考えております。 ※DBの接続文字列にPOSTGRES_USERの値を記述しているため 例えばPOSTGRES_USERを「postgres」にすればアプリ諸共動きます...ww 何か良い案はありますでしょうか・・。すいません。LinuxなどのCUIに慣れておらずで申し訳ないです。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問