繁体   English   中英

如何使用 docker-composer 运行 node js docker 容器来管理 php 应用程序资产

[英]How to run node js docker container using docker-composer to manage php app assets

假设我们有三个服务 - php+ apache - mysql - nodejs

我知道如何使用 docker-compose 来设置应用程序以将 mysql 与 php apache 服务链接起来。 我想知道我们如何添加 node.js 服务来管理 js/css 资产。 node.js 服务的目的只是管理 javascript/css 资源。 由于 docker 提供了这种灵活性,我想使用 docker 服务而不是在我的主机上设置 node.js。

version: '3.2'

services:
  web:
    build: .
    image: lap
    volumes:
      - ./webroot:/var/www/app
      - ./configs/php.ini:/usr/local/etc/php/php.ini
      - ./configs/vhost.conf:/etc/apache2/sites-available/000-default.conf
    links:
      - dbs:mysql
  dbs:
    image: mysql
    ports:
      - "3307:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_PASSWORD=rest
      - MYSQL_DATABASE=symfony_rest
      - MYSQL_USER=restman
    volumes:
      - /var/mysql:/var/lib/mysql
      - ./configs/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
  node:
    image: node
    volumes:
      - ./webroot:/var/app
    working_dir: /var/app

我不确定这是正确的策略,我正在与 Web 和节点服务共享./webroot docker-compose up -d仅启动 mysql 和 web 并且无法启动节点容器,可能没有设置有效的入口点。

也可以在docker-compose中添加nginx服务,nginx可以负责将请求转发到php容器或node.js容器。 您需要一些绑定到 80 端口并将请求重定向到指定容器的服务器。

如果要使用与 PHP 服务分开的节点 js,则必须再设置两个选项以使节点保持运行状态,一个是stdin_open ,另一个是tty ,如下所示

stdin_open: true
tty: true

这相当于 CLI 命令-it像波纹管一样

docker container run --name nodeapp -it node:latest

如果您有一个单独的端口来运行您的节点应用程序(例如,您的前端与后端完全分开,并且您必须独立于后端运行它,就像您必须运行npm run start命令以运行前端应用程序一样),您必须发布您的像波纹管一样的端口

ports:
  - 3000:3000

端口结构是systemPort:containerInnerPort

这意味着将端口 3000 从节点容器内部发布到系统上的端口 3000,以另一种方式使容器内的端口 3000 在您的系统上可访问,您可以像localhost:3000一样访问此端口。

最后,您的节点服务将如下所示

node:
  image: node
  stdin_open: true
  tty: true
  volumes:
    - ./webroot:/var/app
  working_dir: /var/app

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM