2017-09-12 20 views
3

コンテナに最適化されたGoogle Cloud Compute Engineノード内に小型ドッキング用のアプリケーションを作成しようとしていますが、docker-compose upの間にボリュームをマウントしようとすると、 :Google Cloud Engine内でドッキングを実行中

Creating lightning_redis_1 ... 
Creating lightning_db_1 ... 
Creating lightning_redis_1 
Creating lightning_db_1 ... done 
Creating lightning_api_1 ... 
Creating lightning_api_1 ... error 
ERROR: for lightning_api_1 Cannot start service api: error while creating mount source path '/rootfs/home/jeremy/lightning': mkdir /rootfs: read-only file sys 
tem 
ERROR: for api Cannot start service api: error while creating mount source path '/rootfs/home/jeremy/lightning': mkdir /rootfs: read-only file system 
Encountered errors while bringing up the project. 
[email protected] ~/lightning $ 

マイドッキングウィンドウ-compose.ymlファイルは次のようになります。

version: '3' 
services: 
    client: 
    build: ./client 
    volumes: 
     - ./client:/usr/src/app 
    ports: 
     - "4200:4200" 
     - "9876:9876" 
    links: 
     - api 
    command: bash -c "yarn --pure-lockfile && yarn start" 
    sidekiq: 
    build: . 
    command: bundle exec sidekiq 
    volumes: 
     - .:/api 
    depends_on: 
     - db 
     - redis 
     - api 
    redis: 
    image: redis 
    ports: 
     - "6379:6379" 
    db: 
    image: postgres 
    ports: 
     - "5433:5432" 
    api: 
    build: . 
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 
    volumes: 
     - .:/myapp 
    ports: 
     - "3000:3000" 
    depends_on: 
     - db 

私は、ドッキングウィンドウ-compose.ymlファイルに何かを変更する必要がありますする必要はありません - 私はに好みますVM自体の内部でコマンドを実行するか、VMをどのように設定するかによって、この問題を解決することができます。私のコードではないので、docker-compose.ymlファイルを簡単に変更することはできません。短時間実行して、VM内でいくつかのドッカー作成コマンドを実行するだけです。

答えて

2

コンテナ最適化OSは、通常、ほとんどのパスを読み取り専用としてマウントします。あなたがエラーに

source path '/rootfs/home/jeremy/lightning': mkdir /rootfs: read-only file sys 

だから、あなたが持っているいくつかのオプション

使用という名前のボリュームになっている理由は、ドッキングウィンドウを-構成である

あなたが好きなあなたのボリュームを変更する必要があります

volumes: 
    - myappvol:/myapp 

以下

を作成し、最上位レベルのボリュームを

volumes: 
    myappvol: {} 

あなたが現在あなたの代わりに、メインマシンでdocker-composeを実行して、あなたがYAMLを変更したくないあなたは

ファイル名を指定して実行]ドッキングウィンドウ

内のドッキングウィンドウ-構成するために、これは動作しない場合があります言ったようにあなたはこれがうまくいくのメインルートフォルダを持つ別のドッキングウィンドウコンテナ

docker run \ 
    -v /var/run/docker.sock:/var/run/docker.sock \ 
    -v "$PWD:/rootfs/$PWD" \ 
    -w="/rootfs/$PWD" \ 
    docker/compose:1.13.0 up 

docker-composeを使用する必要がありますが、データは内部で持続されるだろうドッカーコンテナそのもの。

は、より詳細

https://cloud.google.com/community/tutorials/docker-compose-on-container-optimized-os

+0

こんにちはタルンのための記事の下にお返事に感謝を参照してください。私は実際にその正確なコマンドを実際に実行しています - 私はドッカーの作成に関するGoogleのチュートリアルに従っています。 – JeremyKirkham

+0

作成ファイルに ':ro'を追加するだけでマウントを準備できますか?だから問題はテストすることができます –

+0

残念ながら、私はdocker-compose.ymlファイルへの書き込みアクセス権がありません – JeremyKirkham

関連する問題