2017-07-18 12 views
0

WindowsのDocker for PostgreSQLでデータベースをインポートしたいと思います。pg_restore:[アーカイバ]が入力ファイルを開けませんでした。そのようなファイルやディレクターはありません

コンテナを正常にビルドして公開した後、docker-compose up –dを使用してドッキング・コンテナを実行し、データベースをプロジェクトにインポートしようとします。ここで

[email protected] MINGW64 ~/dockerProjectImage (master) 
$ docker-compose exec db pg_restore -U fewo -h localhost --dbname=dbName backups/backup.psql 

私は、次のディレクトリ構造があります。

enter image description here

を、今backup.psqlファイルを持っているbackupsという名前のフォルダからデータベースbackup.psqlをインポートしてみてください。

しかし、私はエラーを取得:ディレクトリとファイルの両方が用意されていながら

[email protected] MINGW64 ~/dockerProjectImage (master) 
    $ docker-compose exec db pg_restore -U fewo -h localhost --dbname=dbName backups/backup.psql 
    pg_restore: [archiver] could not open input file "backups/backup.psql": No such file or directory 

を。

ドッキングウィンドウ-compose.yml:あなたのスクリーンショットパー

version: '2' 
services: 

    web: 
    image: image-url-web:latest 
    links: 
     - db 
     - memcached 
     - solr 
    ports: 
     - 8080:80 
     - 8443:443 
    volumes: 
     - ./:/var/www 

    solr: 
    image: image-url-solr:latest 
    links: 
     - db 
    ports: 
     - "8700:8700" 
     - "8710:8710" 
     - "8720:8720" 
     - "8730:8730" 
    restart: always 

    db: 
    image: image-url-db:latest 
    ports: 
     - "8032:5432" 
    restart: always 
    environment: 
     POSTGRES_DB: dbName 
     POSTGRES_USER: dbUser 
     POSTGRES_PASSWORD: 'password' 
     POSTGRES_INITDB_ARGS: '-E SQL_ASCII' 
    volumes: 
     - ./:/var/www/backups 

    memcached: 
    image: memcached:1.4.31 
    restart: always 

答えて

0

、あなたのWindowsシステム上backupsディレクトリを持っています。 docker execコマンドを実行した時点(あなたの例のシェルプロンプトに基づく)に座っているディレクトリと同じレベルにあるようです。

しかし、重要なのは、のコンテナ内にあるものです。です。 docker execを使用して実行するコマンドは、Windowsシステムではなく、コンテナ内で実行されています。

db: 
    volumes: 
    - ./:/var/www/backups 

これは、コンテナ内/var/www/backupsでベースディレクトリ(docker-compose.yml命1)をマウントします:ここで問題になっているコンテナは、ボリュームがdocker-compose.ymlで定義されたマウントがあるdbサービスです。

あなたのスクリーンショットから、docker-compose.ymlがどこに住んでいるのかわかりませんが、コマンドテキストの例ではおそらく~/dockerProjectImageに住んでいるようです。つまり、ディレクトリは/var/www/backupsにマウントされています。

その時点から、スクリーンショットに表示されているbackupsディレクトリにアクセスすることはできません。それはdockerProjectImageの外にあるので、マウントの一部ではありません。

これを解決するには、backupsディレクトリをdockerProjectImageに移動する方法があります。その後、容器内で/var/www/backups/backups/として利用できるようになります。しかし、それはあなたが相対パス(backups/backup.psql)を使用しているので、あなたがあなたのコマンドを書いた方法(おそらく)で動作しません。絶対パスを指定する必要があります(例:

docker-compose exec db pg_restore -U fewo -h localhost \ 
    --dbname=dbName /var/www/backups/backups/backup.psql 
+0

私は上記の手順と同じです。ここでは '/ var/www/backups/backups/backup.psql'の**/**は** C:/ Program Files **と仮定され、次のエラーを出しました: ' $ docker-compose exec db pg_restore -U fewo -h localhost -dbname = dbName/var/www/backups/backups/dbName。psql pg_restore:[アーカイバ]は入力ファイル "C:/ Program Files/Git/var/www/backups/backups/dbName.psql"を開くことができませんでした。:そのようなファイルやディレクトリはありません。\ –

+0

@DeepakPathakあなたのスクリーンショットと質問は、 'C:\ Program Files \'について何も言及していないので、何が起こっているのかは分かりませんでした。私は質問にそのディレクトリに関する情報がないので、ランダムな推測をしているだけです。人々が潜在的な解決策を考え出すためには、質問に詳細を追加する必要があります。 –

関連する問題