2017-02-17 10 views
0

나는 도커에 매우 익숙하며 여러 개의 응용 프로그램으로 컨테이너를 만들려고합니다.도커 - 연결 서비스를 도커 파일에 연결

하자 내 고정 표시기-작성 파일이 같다고 말 :

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

당신의 RUN을 데비안 Jessie가 외면하지 않고'RUN apt-get update'를 실행 한 다음'RUN apt-get install -y wget'을 실행하면 2 개의 다른 컴퓨터에 2 개의 명령을 입력하는 것과 같습니다. 저장소! https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ – user2915097

+0

에서 Dockerfiles 모범 사례를 확인하십시오. https://hub.docker.com/_/mysql/에서 문서를 확인하십시오. – user2915097

+0

Oh I 많은 실수를 ... 고마워요. :) – Mayous

답변

1

ajenti이 mysql에 종속되어 있다고 가정하고 apt-get install ajenti을 수행하면 해당 종속성을 만족하려고 시도합니다. 특히 ajenti-v-mysql을 설치하고 있는데 이는 mysql 종속성이있는 것 같습니다.

mysql을 별도로 실행하기 때문에 --no-install-recommends을 수행해야 할 수 있습니까? 당신이

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

같은 것을 얻을 것, 그래서 이것은 당신이 당신이 필요로하는 다른 depenencies 파악해야하기 때문에 이러한 현상이 더 종속성을 얻을 의미, 플래그 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을 사용할 수 없습니다. 그것은 tehre 내 두 컨테이너 사이의 링크가 아닌 것 같습니다 ... – Mayous

0

:

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

당신이 MySQL을 사용하려고하는 경우 그리고 PHP 컨테이너를 사용하면 앱에서 필요하지 않습니다. 이것은 또한 mysql 암호를 묻는 것에 관한 두 번째 문제를 처리해야합니다.

myapp 구성에서 mysql 및 php 구성의 호스트 이름을 변경해야합니다. 제 생각에 당신은 도커 작성을위한 튜토리얼을 찾는 것이 더 나을 것이라고 생각합니다. 가장 적합하다고 생각하지만 this과 같은 것이 좋은 출발점이 될 것입니다.

관련 문제