Docker-compose和节点容器不是主要的

时间:2018-05-17 17:25:46

标签: node.js docker docker-compose

我是Docker的新手,我已经成功设置了PHP / Apache / MySQL。但是一旦我尝试添加node容器(为了使用npm),它总是在编写时关闭容器。是的,我知道我可以直接使用node而不涉及docker,但我发现它对我自己很有用。

至于composer,我想在node容器中使用卷,以便在node_modules文件夹中保留src

我使用docker-compose up -d --build命令编写它。 在编写过程中它显示没有错误(甚至node容器似乎成功构建)。 如果它有帮助,我可以共享日志文件(它太大了,不能在这里包含它)。

PS。如果您发现可以改进的东西,请告诉我。 提前谢谢!

Dockerfile

FROM php:7.2-apache
RUN apt-get update
RUN a2enmod rewrite

RUN apt-get install zip unzip zlib1g-dev
RUN docker-php-ext-install pdo pdo_mysql mysqli zip

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer global require laravel/installer
ENV PATH="~/.composer/vendor/bin:${PATH}"

搬运工-compose.yml

version: '3'

services:
  app:
    build:
      .
    volumes:
      - ./src:/var/www/html
    depends_on:
      - mysql
      - nodejs
    ports:
      - 80:80

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: qwerty

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mysql:db
    ports:
      - 8765:80
    environment:
      MYSQL_ROOT_PASSWORD: qwerty
      PMA_HOST: mysql
    depends_on:
      - mysql

  nodejs:
    image: node:9.11
    volumes:
      - ./src:/var/www/html

1 个答案:

答案 0 :(得分:0)

作为this Dockerfile你正在使用节目,你实际上并没有在节点容器中运行任何应用程序,因此它一旦构建和启动它就会关闭,因为它没有别的事情要做。

解决方案很简单 - 提供要运行到容器中的应用程序并运行它:

我修改了部分撰写文件

  nodejs:
    image: node:9.11
    command: node app.js
    volumes:
      - ./src:/var/www/html

app.js是编写应用程序的脚本,您可以自由使用自己的名称。

修改,提供您要求的小改进

您没有等到数据库完全初始化(depends_on不具备此功能),所以请看一下我之前处理该问题的一个答案here