2017-02-21 48 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