2017-02-17 14 views
0

私はドッカーには新しく、複数のアプリケーションでコンテナを作成しようとしています。DockerファイルへのDocker-composeリンクサービス

レッツは、私のドッキングウィンドウ・コンファイルは次のようであると言う:

version: '2' 

services: 
    myapp: 
     build: ./dockerfiles/myapp 
     volumes: 
      - ./www:/var/www 
      - ./logs:/var/log 
      - ./mysql-data:/var/lib/mysql 
      - ./php:/etc/php5 
      - ./nginx:/etc/nginx 
     ports: 
      - "8082:8000" 
      - "6606:3306" 
     links: 
      - mysql:mysql 
      - php:php 
      - nginx:nginx 
    mysql: 
     image: mysql 
     environment: 
      MYSQL_ROOT_PASSWORD: [email protected] 
      MYSQL_USER: replymwp 
      MYSQL_PASSWORD: ZSzLPoOi9wlhFaiJ 
    php: 
     image: php:5.6-fpm 
     links: 
      - mysql:db 
    nginx: 
     image: nginx 
     links: 
      - php:php 

さて、myappのDockerFileで、私はMySQLを必要とするパッケージをインストールします。

FROM debian:jessie 

RUN apt-get update 

RUN apt-get update 
RUN apt-get install -y apt-show-versions 

RUN apt-get install -y wget 
RUN wget http://repo.ajenti.org/debian/key -O- | apt-key add - 
RUN echo "deb http://repo.ajenti.org/ng/debian main main ubuntu" >>   /etc/apt/sources.list 
RUN apt-get update 
RUN apt-get install -y ajenti 

RUN apt-get install -y ajenti-v ajenti-v-ftp-vsftpd ajenti-v-php-fpm ajenti-v-mysql 

EXPOSE 8000 
ENTRYPOINT ["ajenti-panel"] 

今の問題は、私は私のドッキングウィンドウ・コンファイルにリンクしていても...などのmysql、ドッキングウィンドウが私のイメージを構築しようとすると、それがPHPをインストールし、です。また、mysqlをインストールしようとすると、マスターパスワードが要求され、何かを入力してもこのステップでブロックされます...

私はそれを使用する方法が全く間違っていますか?

助けていただければ幸いです。あなたは、なぜあなたはまだこのライン上のmpappのdockerfileでインストールなどしている別のMySQLとPHPのコンテナを使用して計画している場合

+1

Debian Jessieがちょうど外に出ていないので、RUN apt-get update 'を実行してから' RUN apt-get install -y wget'を実行すると2つの異なるコンピュータに2つのコマンドを入力するようなものなので、リポジトリ! Dockerfilesのベストプラクティスについてはhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ – user2915097

+0

を参照してください。https://hub.docker.com/_/mysql/ – user2915097

+0

でドキュメントを確認してください参照してください、巨大な間違い...ありがとうたくさん:) – Mayous

答えて

1

ajentiがmysqlに依存しているとします。したがって、apt-get install ajentiを実行すると、その依存関係を満たそうとします。具体的にはajenti-v-mysqlをインストールしていますが、mysqlの依存関係があるようです

mysqlを別々に実行したいので、--no-install-recommendsを実行する必要がありますか?あなたは

apt-get install <packagename> --no-install-recommends 

のようなものを取得したいので、これは、あなたが必要とする他のどのdepenencies把握する必要がある場合がありますので、これは、あなたがNO依存関係を取得していない意味し、フラグVOOR apt-getです。

php-fpmにも同じ問題がありますが、ajenti-v-php-fpmを含む行全体が多すぎると思いますか?

+0

あなたの答えをありがとう。私はajenti-v-mysqlと他のものを削除しました(そしてテストのためにajenti-vを使ってみましょう)。私はRUN apt-get update && apt-get install -y --nodeps \ ajenti \ ajenti-vを試しましたが、E:コマンドラインオプション--nodepsが理解できません – Mayous

+0

私の悪い、それは 'dpkgオプションです。あなたは '--no-install-recommends'が必要だと思います。 – Nanne

+0

これはajenti-v-mysqlと他のものを削除してもうまくいきますが、問題はajentiがmysqlのインスタンスを見ないということです。 Ajentiにはシェルコマンドを実行できる端末がありますが、mysqlは利用できません。それは私の2つのコンテナ間のリンクではないと思われる... – Mayous

0

RUN apt-get install -y ajenti-v ajenti-v-ftp-vsftpd ajenti-v-php-fpm ajenti-v-mysql

MySQLを使用するつもりならそしてPHPのコンテナは、あなたのアプリでそれらを必要としません。これはまた、mysqlパスワードの入力を求める第2の問題を処理する必要があります。

mysqlのホスト名とphp設定をmyapp設定から変更する必要があることに注意してください。私はドッカーの作成を設定するためのチュートリアルを探しているほうが良いかもしれないと思うが、最も適切なものを探すためにあなた自身を見なければならないだろうが、thisのようなものはあなたに良いスタートを与えるだろう。

関連する問題