LoginSignup
3
1

More than 3 years have passed since last update.

【備忘録】【Docker奮闘記:2】Postgres9.3イメージ取得&コンテナ作成

Posted at

ひょー!色々ドタバタしてて前回から1年以上経ってるお久しぶりです

はじめに

この備忘録は、Docker for Windows(コミュニティ版)インストール時のメモ書きです。
・Dockerのインストール 前回の記事 
・コンテナの作成 ←イマココ
・PostgreSQLの設定
・Pythonプログラムからアクセス

今回は、Docker上にPostgres9.3のコンテナを作って、pgAdmin4から接続するところまでです。

OS

Windows 10 Pro 64bit
Docker 18.03.1-ce

手順

postgresイメージの取得

ではpostgreSQLのイメージを探しに行きます。
まずは下記URLにアクセス。
https://store.docker.com/

以降、このメモを作成していたときのスクリーンショットです。
現在とはレイアウトが異なります…。
4-01.png

検索窓に「postgres」と入力して、ゾウさんマークを探します。:elephant:
4-02.png

一覧からゾウさん:elephant:を選ぶと、該当のイメージのページに遷移します。
画面右の「View Available Tags」から、利用可能なタグを見ることができます。
4-03.png

タグの一覧の中から…
4-04.png

今回は「9.3」のタグを利用してみます。
4-05.png

利用したいイメージとタグがわかったので、Dockerからイメージを取得しに行きます。
PowerShellを起動して
4-06.png

docker image pull postgres:9.3

暫し待つ…
4-09.png

すべてのステータスがCompleteになると、
ダウンロードのダイジェストが表示されて再び入力待ちになります。
4-10.png

これでイメージ取得完了~

コンテナ作成

続いてコンテナ作成していきます。
今回の設定はこんな感じにしてみました↓
4-11.png
ひとまず、ポートはデフォルトから別の無害そうなポートに移してます。
(自身の環境で開いてるポートを使ってください)

この設定値を元に、container runコマンドを組み立てます。

docker container run --name [コンテナ名] -e POSTGRES_PASSWORD=[パスワード] -p [ポートフォワード]:[ポート] -d [コンテナイメージ]:[イメージタグ]

↑これが↓こう

docker container run --name postgres9.3 -e POSTGRES_PASSWORD=postgres -p 55432:5432 -d postgres:9.3

これでポーンとやったらコンテナが作成されるのですが、
スクリーンショットを取り忘れていたという失態…:upside_down:

コンテナの一覧やステータスは、以下のコマンドで確認できます。

▼コンテナ一覧取得

docker container ls

▼コンテナのステータス確認

docker container stats [コンテナ名]

pgAdmin4インストール

続いてはpgAdminを入れていきます。
下記URLにアクセス。
https://www.pgadmin.org/

Download → Windows → 最新バージョンのリンクから、
exe形式のインストーラをダウンロードします。(またスクショ忘れました:punch:

v3.1のインストーラをダウンロードしたexeを実行していきます~
5-01.png

ライセンスについて読んだら、I accept the agreement で Next
5-02.png

今回はそのままの設定でNextしました。
5-03.png

名前もそのままNext
5-04.png

実行前に、設定を再確認します。
問題なければInstall
5-05.png

Launch pgAdmin4にチェックを入れて、そのまま動作確認してみます。
5-06.png

ブラウザが起動して、pgAdmin4の画面が表示されました~
5-07.png

pgAdmin4から、Dockerコンテナの上のPostgresにアクセス

せっかくなので、そのまま接続情報を作成します。
左のメニューを右クリックして、
Create → Server
と選びます。
5-08.png

本記事の上の方で作成したコンテナに対する接続設定をしていきます。
2つ目のタブ[Connection]を開いて、以下の通りに入力します。
5-09.png

無事、pgAdminからDocker上のPostgresにアクセスできました~
5-10.png

接続情報の名前について

基本的には何でも良いのですが、私の場合は
 DB名:ポート:ユーザ名
と書くことが多いです。
postgresユーザはpostgresにしかつながないので、
DBバージョン:ポート:postgres
としています。
運用フェーズに入ったら真っ先に消える接続情報なので、
まぁこれでもいいかなぁと。
皆さんどうやって決めてるんですかね??

以上!!

次回の記事の前フリ

ユーザ作成

デフォルトで作成されるpostgresユーザ、postgresDBをそのまま使うのは好きじゃないので、
これから作るDB用のスーパーユーザを作っちゃいます。

というわけで、まずはユーザ作成します。
postgresユーザでログインしている状態で、[Login/Group Roles]を右クリックして、
 Create → Login/Group Roles
5-11.png

ユーザ名を[db01admin]として、ユーザを作成します。(またスクショ忘れました:wave:

Generalタブ: Name:db01admin
Definitionタブ: password:db01admin
Privilegesタブ: ↓
5-12.png
でSaveします。

今作成したdb01adminユーザ用の接続情報を作成します、
左のメニューを右クリックして、
Create → Server
と選びます。
設定値はpostgresユーザとほぼ同じですが、[Username]には[db01admin]とします。
これは作成したユーザ情報をあとから見ている図↓
5-13.png

作成できたら、一旦postgresユーザの接続は切断します。
5-20.png

DB作成

db01adminユーザ用の接続情報をダブルクリックしてログインします。
Databasesを右クリックして、
Create → Database
と選びます。
5-14.png

新しいデータベースをdb01とします。
設定は左のタブからこんな感じにしました。↓
Generalタブ:
5-15.png

Definitionタブ:
5-16.png
ここで、[Collation]や[Character type]に日本語utf8が選べない事に悶々とする。

Securityタブ:
5-17.png

Parametersタブ:
5-18.png

SQLタブでは、ここまでの設定がSQLとして表示されます。
5-19.png
普通はこれでSaveすればDBは作成されるのですが…

ウィザードからは日本語utf8を指定できなかったので、
SQLを直に流してみようとした結果が↓
5-26.png

日本語だめなの!?
おかしいなーと思ってコーレーションの一覧出してみたものの
5-27.png
私の好きなja_JP.utf8の文字はなく…

調べてみると、
Postgresのコーレーション周りはOSに依存している
→今のPostgresが稼働しているOSはLinux…
→そのLinuxはDockerのコンテナに乗っている…
→コンテナはDLしてきたDockerイメージから生成している…

ので、Dockerイメージを変更して、Linuxにロケール設定を追加しないとならない!!

?????:thinking::thinking::thinking::thinking::thinking:

次回、Dockerfileを作ってイメージを変更する!
ここからが調べる時間かかったー:sob::sob::sob:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1