0

docker compose でhttps://github.com/kiasaki/docker-alpine-postgresイメージを使用すると、ログから確認できるように、/docker-entrypoint.initdb.d 内のスクリプトが実行されていません。

 db_1   | LOG:  database system was shut down at 2016-09-05 18:16:02 UTC
 db_1   | LOG:  MultiXact member wraparound protections are now enabled
 db_1   | LOG:  database system is ready to accept connections
 db_1   | LOG:  autovacuum launcher started

問題は、Dockerfile スタンドアロンをビルドしてコンテナーを実行すると、ログからわかるように、フォルダー内の sql ファイルが実行されることです。

waiting for server to start....LOG:  database system was shut down at 2016-09-05 18:28:18 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
 done
server started

/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/syna-setup.sql
CREATE TABLE
INSERT 0 1
CREATE TABLE

waiting for server to shut down...LOG:  received fast shutdown request
.LOG:  aborting any active transactions
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down
 done
server stopped
LOG:  database system was shut down at 2016-09-05 18:28:21 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
LOG:  received fast shutdown request
LOG:  aborting any active transactions
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down

docker-compose.yml:

version: '2'
services:
  db:
    build: ./db
    environment:
     - POSTGRES_PASSWORD=testpass
    restart: always
  app:
    build: ./app
    ports:
     - "5000:5000"
    volumes:
     - .:/app/src
    depends_on:
     - db
    environment:
     - DB_SERVER=postgres://postgres:testpass@db:5432/postgres

ここで何が間違っていますか?

4

1 に答える 1

0

彼はgithubリンクからではなく、彼自身のDockerfileを使用しているため、更新されました。


そのように docker run コマンドを提供していただけますかif I build the Dockerfile standalone and run the container, it will execute the sql files inside the folder。SQL ファイルを検出できるように、コンテナーにディレクトリをマウントする必要があります。

https://github.com/kiasaki/docker-alpine-postgres/blob/master/DockerfileでDockerfile を読み、SQL ファイルはどこにあるのか自問しました。SQLファイルをコピーせずにディレクトリを作成するだけです

mkdir /docker-entrypoint-initdb.d

次に、docker-entrypoint.sh実行するSQLファイルがあるかどうかを確認します

for f in /docker-entrypoint-initdb.d/*; do
        case "$f" in
            *.sh)  echo "$0: running $f"; . "$f" ;;
            *.sql) echo "$0: running $f"; psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < "$f" && echo ;;
            *)     echo "$0: ignoring $f" ;;
        esac
        echo
done

次のように、SQLディレクトリをマウントする必要があると思います

version: '2'
services:
  db:
    build: ./db
    environment:
     - POSTGRES_PASSWORD=testpass
    restart: always
    entrypoint:
     - docker-entrypoint.sh
    volumes:
     - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
     - ./docker-entrypoint.sh:/docker-entrypoint.sh
于 2016-09-06T03:11:59.797 に答える