2017-02-21 70 views
0

我有一個laravel項目,需要依賴關係的命令所以,我創建了一個docker-compose.yml 3個服務:運行項目從dockerfile

version: '2.0' 

services: 
    db-mysql: 
    image: mysql 
    environment: 
     - "MYSQL_DATABASE=app_db" 
     - "MYSQL_USER=db_user" 
     - "MYSQL_PASSWORD=nutella" 
     - "MYSQL_ROOT_PASSWORD=choco" 
    db-mongo: 
    image: mongo 
    app: 
    volumes: 
     - C:\Users\svirl\Documents\workspace\app-web:/var/www/html/:rw 
    build: app 
    links: 
     - db-mysql 
     - db-mongo 
    ports: 
     - 32772:80 
    depends_on: 
     - db-mysql 
     - db-mongo 

好了,所以我的應用程序我有一個Dockerfile構建:

FROM php:5.6-apache 
WORKDIR /var/www/html/ 

RUN apt-get update 

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 
RUN composer install #* 
RUN apt-get install npm 
RUN npm install #* 
RUN npm install -g bower 
RUN bower install --allow-root 
RUN npm install -g gulp 
RUN gulp 

但是像那些#*那倒工作的一些命令,因爲體積不安裝過程和文件的還不存在和錯誤拋出如:

Composer could not find a composer.json file in /var/www/html 

那麼這種情況下存在什麼解決方案?爲了讓我的項目運行,我需要在容器創建中運行這些命令。

+0

嗨!看看https://nodejs.org/en/docs/guides/nodejs-docker-webapp/,這是dockerize app的最好例子。它只是一個節點應用程序,但您可以將其與其他語言一起使用。 ;) –

+0

正如我在其他問題時說,複印容器內你的代碼是不是比創建與碼頭工人,撰寫一個卷的獨佔。 –

回答

1

使用命令(composer install, npm install...)編寫一個shell腳本,並將該腳本作爲ENTRYPOINT加入您的Dockerfile

+0

我試着用'ENTRYPOINT作曲者安裝&& npm install &&/bin/sh -c',但容器不會再啓動了。 –

+0

寫一個shell腳本,'COPY',要形象,使其可執行文件和超過設定'入口點/路徑/到/ script.sh'。 – Martin

+0

另外,請給出更多的細節。任何錯誤消息? 「docker logs」和「docker ps -a」是什麼意思? – Martin