2017-02-17 64 views
0

我對docker很新穎,我正在嘗試使用多個應用程序創建一個容器。Docker-compose鏈接服務到dockerfile

讓我們說,我的搬運工,撰寫文件是這樣的:現在

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"] 

現在的問題是,當搬運工試圖建立自己的形象,把它安裝PHP和MySQL等...即使我在泊塢窗,撰寫文件鏈接。其次,當它嘗試安裝MySQL時,它會提示輸入主密碼,並在此步驟中保持阻止狀態,即使我填充了某些內容...

也許我完全錯誤地使用它?

任何幫助將不勝感激。

+1

對你的RUN進行分組,因爲Debian 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

查看文檔哦看到,巨大的錯誤...非常感謝:) – Mayous

回答

1

我想你的ajenti有依賴於mysql,所以如果你做apt-get install ajenti,它會試圖滿足這種依賴。具體來說,你正在安裝ajenti-v-mysql,似乎有一個MySQL的依賴

因爲你想運行mysql分開,你可能需要做--no-install-recommends?這是一個標誌VOOR apt-get,所以你會得到類似

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

這意味着你沒有依賴關係,所以你可能需要找出你需要的其他depenencies。

php-fpm有同樣的問題,我想整條線包括ajenti-v-php-fpm有點太多了?

+0

感謝您的回答。我刪除了ajenti-v-mysql和其他的(並且只是讓ajenti-v進行測試)。我試着用apt apt-get update && apt-get install -y --nodeps \ ajenti \ ajenti -v但是它會提示:E:命令行選項--nodeps不明白 – Mayous

+0

我的不好,那好像是'dpkg '選項。你需要'--no-install-recommendation'我想。 – Nanne

+0

好的,謝謝,所以它在我刪除ajenti-v-mysql和其他程序時起作用,但是我的問題是ajenti沒有看到任何mysql實例。 Ajenti有一個終端可以運行shell命令,但是mysql不可用。看起來tehre並不是我的兩個容器之間的鏈接...... – Mayous

0

如果你打算使用單獨的MySQL和PHP的容器,那麼你爲什麼還包括在該線路上mpapp dockerfile安裝:

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這樣的東西會給你一個好的開始。