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

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

新規登録して質問してみよう
ただいま回答率
85.46%
PostgreSQL

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

Docker

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

Q&A

解決済

2回答

1046閲覧

DockerfileのCMDが思ったように動作しない

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

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

Docker

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

0グッド

0クリップ

投稿2021/09/28 00:16

自身のトレーニング用に
Dockerfileを作成して独自イメージを作成してpostgresqlサーバーを起動させたいのですが、
以下のように記述したDockerfileをビルドしてもdockerすぐにExitとななります。

Dockerfile

1FROM centos:latest 2 3RUN dnf -y update && \ 4dnf -y install glibc-langpack-ja && \ 5dnf -y install postgresql-server && \ 6dnf -y install postgresql-contrib 7 8USER postgres 9 10 11RUN LANG=ja_JP.utf8 && export LANG && initdb -D /var/lib/pgsql/data && cd /var/lib/pgsql/data 12 13EXPOSE 5432 14 15CMD ["pg_ctl", "-D", "/var/lib/pgsql/data", "-l", "logfile", "start"] 16

上記の内容を以下のように buildしています。

docker container -t pgsql-original .

その後、

docker container create --name pgsql -it -p 5555:5432 pgsql-original docker container start pgsql

上記コマンドを叩いても

# docker container ls -a を叩くと Exited (1) 1 second ago

上記のような状態になってしまいます。

これを既存のpostgresqlイメージの用に、
docker container start 'container name' コマンドで起動しっぱなしにしたいのですが、
Dockerfileをどの様に修正したら良いのでしょうか?

識者の方ご教授いただけますと幸いです。
※ちなみに、postgresqlをdockerで使うのが目的ではなくDockerfileで作成したイメージのサービスを
持続させて起動させたいことが目的です。

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

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

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

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

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

guest

回答2

0

Dockerfileで作成したイメージのサービスを

持続させて起動させたいことが目的です。

持続させて起動させるにはフォアグラウンドで起動する必要があります
※CMDに指定したコマンドをデーモンとして起動させない

あと、そういう指定だったとしてもそのコマンド自体がエラーだったときは終了します

エラーがでているならそれを記述して貰えればと思いますが

試しに同じDockerfileで起動したらパーミッションエラーがでていました
同様であれば
CMDのパラメータ "-l", "logfile"
このlogfileの部分 試しに /tmp/logfile などと誰でも書き込める場所を指定してみたらどうでしょう

https://www.postgresql.jp/document/7.2/reference/app-pg-ctl.html

投稿2021/09/28 02:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

以下の内容で自己解決しました...

Dockerfile

1 2FROM centos:latest 3 4 5RUN dnf -y update && \ 6dnf -y install glibc-langpack-ja && \ 7dnf -y install postgresql-server && \ 8dnf -y install postgresql-contrib && \ 9dnf -y install which 10 11USER postgres 12 13RUN LANG=ja_JP.utf8 && \ 14export LANG && \ 15initdb -D /var/lib/pgsql/data && \ 16cd /var/lib/pgsql/data 17 18EXPOSE 5432 19 20 21CMD ["postgres", "-D", "/var/lib/pgsql/data"] 22

pg_ctlコマンドだと、指摘の通り、バックグランドで動作させるためのコマンドでした。

postgresqlサーバーインストール時にインストールされるpostgresコマンドで
実行すると、そのままコンソールにログがながれていったことでフォアグラウンドでの実行が必要という言葉の意味がわかった気がします。

投稿2021/09/28 03:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問