2017-09-23 13 views
0

docker-machineを使用した単純なRailsアプリケーションでdocker-composeアプリケーションを配備するにはどうすればよいですか?それは意味をなさないでしょうか?docker-machineでdocker-compositedアプリケーションをデプロイする方法は?

official Docker docs on using Compose in productionRemote Deployment Guide by Rackspaceを含む複数の記事を読んでいますが、それは実際に私のために働いていません。

私は、次のdocker-composeファイルで記述非常に単純Railsのアプリを持っている:私はdocker-machineを使用してリモートホストにデプロイしようとしている

version: '3' 

services: 

    app: 
    build: 
     context: . 
     dockerfile: containers/production/Dockerfile 
    image: projectname:app 
    command: containers/production/bootstrap.sh 
    ports: 
     - 3000:3000 
    volumes: 
     - .:/app 
     - gems:/gems 
    depends_on: 
     - db 
    environment: 
     - DOCKERIZED=1 

    db: 
    image: postgres:9.6 
    ports: 
     - '5432:5432' 
    volumes: 
     - data:/var/lib/postgresql/data 

volumes: 
    data: 
    gems: 

次へ:

eval "$(docker-machine env production)" 
docker-compose build 
docker-compose up -d 

最初の2つの手順の作品完璧に。ローカルのComposeに接続されているDockerホスト、app画像、dbコンテナが稼働開始。しかしappの起動に失敗しました:私はマシンに関するいくつかの重要な概念が欠けてるよう

Creating projectname_app_1 ... 
Creating projectname_app_1 ... error 

ERROR: for projectname_app_1 Cannot start service app: oci runtime error: container_linux.go:262: starting container process caused "exec: \"containers/production/bootstrap.sh\": stat containers/production/bootstrap.sh: no such file or directory" 

が見えます。どのように私は生産を書くことになっているリモートコンテナのホスト上で動作するようにファイルを作成する?

答えて

1

エラーメッセージに表示されるものから、containers/production/bootstrap.shが存在しないことが問題のように見えます。はドッカーインスタンスの中にあります。 commandは、ホストマシンではなく、ドッカーコンテナ内でスクリプトを実行します。

コピーコンテナのworkdirにスクリプト、および./bootstrap.shようなもので、それを実行するか、あるいはこのようなものがあまりにも助けることができる:私は、それぞれの持つホスト上のファイルにマッチしています

app: 
build: 
    context: . 
    dockerfile: containers/production/Dockerfile 
image: projectname:app 
command: /bootstrap.sh 
ports: 
    - 3000:3000 
volumes: 
    - .:/app 
    - gems:/gems 
    - ./containers/production/bootstrap.sh:/bootstrap.sh 
depends_on: 
    - db 
environment: 
    - DOCKERIZED=1 

チェックコンテナ内のパス(/bootstrap.sh)とそれを実行するcommand

+0

良い考え、よろしくお願いします。あなたの提案を実装しようとしましたが、突然私はあなたのDO液滴に画像を構築している間に 'Can not allocate memory'エラーを開始します... – vtambourine

+0

あなたの問題を解決できましたか?たぶん、いくつかのログを共有して、私たちがあなたを助けることができます。 – eLRuLL

関連する問題