簡體   English   中英

Docker-compose和節點容器不是主要的容器

[英]Docker-compose and node container as not the primary one

我是Docker的新手,並且已經成功設置了PHP / Apache / MySQL。 但是一旦我嘗試添加node容器(為了使用npm ),它總是在組合后關閉容器。 是的,我知道我可以直接使用node ,而無需涉及docker ,但是我發現它對自己很有用。

至於composer ,我想在node容器中使用卷,以便將node_modules持久node_modulessrc文件夾中。

我使用docker-compose up -d --build命令將其組成。 在編寫過程中,它沒有顯示任何錯誤(即使node容器似乎也已成功構建)。 如果有幫助,我可以共享日志文件(它太大了,無法在此處包含它)。

PS。 如果您發現可以改進的地方,請告訴我。 先感謝您!

Docker文件

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

docker-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

由於這個 Dockerfile您使用的節目,你實際上並沒有那么盡快乳寧在節點容器中的任何應用程序,它建立並啟動-它關閉,因為它沒有其他事情可做。

解決方案很簡單-提供一個您要運行到容器中並運行的應用程序,如下所示:

我已經修改了您的撰寫文件的一部分

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

其中app.js是編寫應用程序的腳本,您可以自由使用自己的名稱。

編輯提供您要求的小改進

您不會等到數據庫完全初始化之后( depends_on無法執行此操作),因此請在此處查看我之前針對該問題的答案之一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM