【发布时间】:2017-02-21 09:58:30
【问题描述】:
我有一个 laravel 项目需要:
- mysql数据库镜像
- mongo 数据库图片
- 依赖项:npm、composer、gulp、bower
所以我创建了一个docker-compose.yml,其中包含 3 个服务:
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
但当然,像#* 这样的一些命令将无法正常工作,因为 VOLUME 未安装且文件尚不存在,并且会抛出如下错误:
Composer could not find a composer.json file in /var/www/html
那么对于这种情况有哪些解决方案呢?为了让我的项目运行,我需要在容器创建时运行这些命令。
【问题讨论】:
-
嗨!看看nodejs.org/en/docs/guides/nodejs-docker-webapp,这是 dockerize 应用程序的最佳示例。它只是一个节点应用程序,但您可以将它与其他语言一起使用。 ;)
-
正如我在其他问题中所说,将代码复制到容器内并不比使用 docker-compose 创建卷具有排他性。
标签: mysql mongodb docker docker-compose dockerfile