title: Integrate nodejs into existing docker lamp container
body: <p>I'm currently learning how to use docker. And i have a lamp stack container, including php7.4, apache, mariadb, phpmyadmin. All is working fine. I installed Laravel into this container. It includes all needed php extensions.
  (I'm aware of Laravel Sail, for docker learning purposes i prefer not to use Sail. I prefer to use my own container).
  One problem i'm facing now is i try to install Laravel Breeze and i need to use npm commands at some point. But i couldn't manage to install nodejs into my container and i can use some help.</p>
  <p>This is docker-compose.yml</p>
  <pre><code>version: &quot;3&quot;
  
  services:
    webserver:
      build: 
        context: ./bin/${PHPVERSION}
      container_name: '${COMPOSE_PROJECT_NAME}-${PHPVERSION}'
      restart: 'always'
      ports:
        - &quot;${HOST_MACHINE_UNSECURE_HOST_PORT}:80&quot;
        - &quot;${HOST_MACHINE_SECURE_HOST_PORT}:443&quot;
      links: 
        - database
      volumes: 
        - ${DOCUMENT_ROOT-./www}:/var/www/html
        - ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini
        - ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
        - ${LOG_DIR-./logs/apache2}:/var/log/apache2
      environment:
        PMA_PORT: ${HOST_MACHINE_PMA_PORT}
    database:
      build:
        context: &quot;./bin/${DATABASE}&quot;
      container_name: '${COMPOSE_PROJECT_NAME}-database'
      restart: 'always'
      ports:
        - &quot;127.0.0.1:${HOST_MACHINE_MYSQL_PORT}:3306&quot;
      volumes: 
        - ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql
        - ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql
      environment:
        MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        MYSQL_DATABASE: ${MYSQL_DATABASE}
        MYSQL_USER: ${MYSQL_USER}
        MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    phpmyadmin:
      image: phpmyadmin/phpmyadmin
      container_name: '${COMPOSE_PROJECT_NAME}-phpmyadmin'
      links:
        - database
      environment:
        PMA_HOST: database
        PMA_PORT: 3306
        PMA_USER: ${MYSQL_USER}
        PMA_PASSWORD: ${MYSQL_PASSWORD}
        MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        MYSQL_USER: ${MYSQL_USER}
        MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      ports:
        - '${HOST_MACHINE_PMA_PORT}:80'
      volumes: 
        - /sessions
        - ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
    redis:
      container_name: '${COMPOSE_PROJECT_NAME}-redis'
      image: redis:latest
      ports:
        - &quot;127.0.0.1:${HOST_MACHINE_REDIS_PORT}:6379&quot;
  </code></pre>
  <p>I'm pulling some variables from .env file and others from several Dockerfiles.</p>
  <p>I want to integrate nodejs but not for serious nodejs programming. Only for some Laravel based situations like running 'npm install', 'npm run dev' etc. I won't be needing extra details. And i guess it should run on the same volume with the php image.</p>