2017-12-15 11 views
1

を構成していませんビルドスクリプトを別のコンテナに移動しました(マイグレーションとコンポーザーのインストール)ドッカーは、私が(laravel上に構築された)私のPHPのWEVアプリをcontainerizeしようとしてきたが、私は</p> <p>最初私が実行した後に、コンテナを終了することを発見したいくつかの問題に遭遇してきたコマンドにはそのようなファイル

ビルド手順が含まれているinit.shというスクリプトを作成しましたが、docker-compose.ymlcommandから実行するたびに、ディレクトリ。

この

は私のdockerfile

FROM nimmis/apache-php7 


COPY apache_default /etc/apache2/sites-available/000-default.conf 

RUN a2enmod rewrite 

RUN service apache2 restart 

である、これは私のドッキングウィンドウ-compose.ym

version: "3" 

volumes: 
    db-data: 
     external: false 

services: 
    db: 
     image: mysql/mysql-server 
     env_file: .env 
     volumes: 
      - db-data:/var/lib/mysql-server 

    migrations: 
     build: . 
     env_file: .env 
     volumes: 
      - .:/var/www/html/books 
     depends_on: 
      - app 
     command: 
      # - /var/www/html/books/artisan migrate 
      # - chmod 777 /var/www/html/init.sh 
      - /var/www/html/books/init.sh 
      # - /var/www/html/init.sh 
     environment: 
      - ALLOW_OVERRIDE=true 

    app: 
     build: . 
     env_file: .env 
     volumes: 
      - .:/var/www/html/books 
     ports: 
      - "8081:80" 
     depends_on: 
      - db 
     environment: 
      - ALLOW_OVERRIDE=true 

正しくスクリプトを実行するには、コメント部品異なる試みです。

私は、ドッキングウィンドウのツールボックス

私が間違って何をやっているを使用して、Windows 10上でそれを実行しようとしていますか?これは正しいアプローチですか?代わりに、この

volumes: 
      - .:/var/www/html/books 

使用の

+1

ように私のdockerfileを調整しました? –

+0

Dockerfileには何が入っていますか? init.shは何ですか? – Matz

+0

私の質問を更新しました... @JayBlanchardマイグレーションでは、コマンドの実行しようとしているファイルはありません – Sherif

答えて

0

だから私はそれがアクセス許可の問題だった...間違っていたものを考え出しました。

私はそれがうまく働いた実行可能に権限を設定...

は、今私がしなければならなかったすべては、それがためにそのようなファイルを言っていないされている1

FROM nimmis/apache-php7 

COPY . /var/www/html/books 

COPY start.sh/

RUN chmod +x /start.sh 

COPY apache_default /etc/apache2/sites-available/000-default.conf 

RUN a2enmod rewrite 

RUN service apache2 restart 
0

ドッキングウィンドウ・コンファイル

+0

ファイルをボリュームとして参照することはできません –

+0

しかし、ファイルを含むフォルダを添付できます。私が更新する答えは –

+0

もちろんあります。それがフォルダの場合、あなたはすべて設定されています:-)あなたはちょうどそれが適切にマウントされないので直接ファイルを参照することはできません。乾杯! –

1

コンテナが構築されたときに容器の中に何かを実行しますRUNディレクティブ、いないとき、容器内の

volumes: 
      - folder_containg_sh:/var/www/html/books #relative path to script 

実行中です。そのために

、あなたのDockerfileがより次のようになります。あなたは、ブート時に容器にコマンドを渡す場合

FROM nimmis/apache-php7 


COPY apache_default /etc/apache2/sites-available/000-default.conf 

RUN a2enmod rewrite 

ENTRYPOINT ["bash", "/path/to/init.sh"] 
CMD ["apache2", "-DFOREGROUND", "-k", "start"] 

エントリポイントディレクティブは関係なく、右CMDディレクティブの前に実行されます。

だから、あなたはinit.shコンテナがそれに渡すコマンドを実行したいでしょう:

#!/bin/bash 
# init.sh 

# todo: whatever init.sh does... 

# Execute the CMD passed to the container: 
exec "[email protected]" 
関連する問題

 関連する問題