LoginSignup
7
8

More than 5 years have passed since last update.

DockerでMySQL/PostgreSQLの初期データが生成されないときに確認すること

Last updated at Posted at 2017-06-22

Dockerにて、MySQLやPostgreSQLを構築しようとしたとき、初期データとしてユーザやデータベースを作成しておきたい、なんてことはよくあるんじゃないでしょうか。

そんなときは、/docker-entrypoint-initdb.d/の下に、.sh,.sql,.sql.gzらの拡張子でファイルを置いておくと、よしなにしてくれるそうです。

Dockerfile
...

COPY ./db/init.sql /docker-entrypoint-initdb.d/

...
init.sql
CREATE USER hoge_user WITH CREATEDB;

しかし、何度もbuildしてはコンテナに入って確認し…
なんてことを続けていると、「ユーザ名変えたはずなのに変わってない」「データがインポートできなくなった!」
と、自分のミスではないところで時間を取られてしまうことになります。

そんな時は、以下の点に気をつけて確認してみると良いかもです。

キャッシュを使わずにbuildしてみましょう

$ docker-compose build --no-cache

コンテナに、以前実行されたものがないか確認して、もしあれば消してみましょう

$ docker ps -a
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                         PORTS                    NAMES
76960e4db0df        xxxxxxxxxxxxxx_app   "irb"                    12 hours ago        Exited (1) 10 seconds ago                       xxxxxxxxxxxxxx_app_1
5cf684f2a2dd        xxxxxxxxxxxxxx_db    "docker-entrypoint..."   12 hours ago        Exited (0) 6 seconds ago                        xxxxxxxxxxxxxx_db_1


$ docker rm 76960e4db0df 5cf684f2a2dd

参考:Initializing a fresh instance 辺り

7
8
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
7
8