Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

murilo's avatar
Level 10

Create 2 Laravel projects with docker compose , with 1 dataase

hello , I am trying to create 2 Laravel projects with docker compose . But 1 databse . I want to share these databse between the two projects .

Is that possible ? I am tryin to do like this -

PROJECT ONE - docker-compose.yaml -

version: "3.9"
networks:
  project_one:
services:
  server:
    # image: 'nginx:stable-alpine'
    build:
      context: .
      dockerfile: dockerfiles/nginx.dockerfile
    ports:
      - 8081:80
      - 7010:7010
    volumes:
      - ./src:/var/www/html
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - php
      - redis
      - mysql
    container_name: project_one_server
    networks:
      - project_one
  mysql:
    image: mysql:8.0.1
    restart: unless-stopped
    tty: true
    container_name: mysql_sso_one
    env_file:
      - ./env/mysql.env
    ports:
      - 3306:3306
    networks:
      - project_one
    volumes:
      - /opt/mysql_data_sso_one:/var/lib/mysql
  php:
    build:
      context: .
      dockerfile: dockerfiles/php.dockerfile
    container_name: php_one_server
    volumes:
      - ./src:/var/www/html:delegated
    networks:
      - project_one
  redis:
    image: redis:alpine
    restart: unless-stopped
    ports:
      - 6379:6379
    networks:
      - project_one
  composer:
    build:
      context: ./dockerfiles
      dockerfile: composer.dockerfile
    volumes:
      - ./src:/var/www/html
    depends_on:
      - php
    networks:
      - project_one
  artisan:
    build:
      context: .
      dockerfile: dockerfiles/php.dockerfile
    volumes:
      - ./src:/var/www/html
    entrypoint: ["php", "/var/www/html/artisan"]
    networks:
      - project_one
  npm:
    build:
      context: .
      dockerfile: dockerfiles/node.dockerfile
    working_dir: /var/www/html
    entrypoint: [ "npm" ]
    volumes:
      - ./src:/var/www/html
    networks:
      - project_one
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    container_name: phpmyadmin_sso_one
    depends_on:
      - mysql
    ports:
      - '8890:80'
    environment:
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=secret
    networks:
      - project_one
  mailhog:
    image: mailhog/mailhog:latest
    container_name: mailhog_sso_one
    ports:
      - 1025:1025
      - 8025:8025
    networks:
      - project_one

PROJECT TWO- docker-compose.yaml -

version: "3.9"
networks:
  project_one:
    driver: bridge
  project_two:
services:
  server:
    # image: 'nginx:stable-alpine'
    build:
      context: .
      dockerfile: dockerfiles/nginx.dockerfile
    restart: unless-stopped
    ports:
      - "8083:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - php
      - project_one
      - project_two
    container_name: project_two_server
    networks:
      - project_two
      - project_one
  php:
    build:
      context: .
      dockerfile: dockerfiles/php.dockerfile
    container_name: php_parametros_server
    volumes:
      - ./src:/var/www/html:delegated
    ports:
      - 8088:9000
    networks:
      - project_two
      - project_one
  composer:
    build:
      context: ./dockerfiles
      dockerfile: composer.dockerfile
    volumes:
      - ./src:/var/www/html
    depends_on:
      - php
    networks:
      - project_two
  artisan:
    build:
      context: .
      dockerfile: dockerfiles/php.dockerfile
    volumes:
      - ./src:/var/www/html
    entrypoint: ["php", "/var/www/html/artisan"]
    networks:
      - project_two

.env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=project_one
DB_USERNAME=root
DB_PASSWORD=secret

0 likes
1 reply

Please or to participate in this conversation.