Docker Compose
If you define an application with Docker Compose, you can use that
definition to run the application in CI, staging, or production environments.
Here you can find docker-compose.yml
files necessary to run
memgraph-platform
,
memgraph-mage
, and
memgraph
. You can also find
Docker Compose configurations for Memgraph Platform versions up to
2.14.
Docker Compose for Memgraph Platform
The Docker Compose configuration for the Memgraph Platform is designed to
facilitate a smooth and efficient setup process for developers by specifying the
use of memgraph/memgraph-mage
and memgraph/lab
images. This setup ensures
that all necessary services are properly configured to work together seamlessly,
emphasizing ease of use and integration.
version: "3"
services:
memgraph:
image: memgraph/memgraph-mage:latest
container_name: memgraph-mage
ports:
- "7687:7687"
- "7444:7444"
command: ["--log-level=TRACE"]
lab:
image: memgraph/lab:latest
container_name: memgraph-lab
ports:
- "3000:3000"
depends_on:
- memgraph
environment:
- QUICK_CONNECT_MG_HOST=memgraph
- QUICK_CONNECT_MG_PORT=7687
Key Features
-
Memgraph MAGE: The core of the platform, the Memgraph database with included MAGE algorithms, is set up with ports
7687
for the Bolt protocol and7444
for the optional HTTPS interface. The log level is set toTRACE
to provide detailed output, which is invaluable for debugging and further development. -
Memgraph Lab: A user-friendly visual interface that connects automatically to the Memgraph service using predefined environment variables. It is accessible through port
3000
, offering an intuitive environment for query execution and data visualization. -
Service Dependency: Configuration ensures that Memgraph Lab starts only after the Memgraph database service is fully operational, establishing a reliable service order and minimizing startup issues.
Notes
-
This configuration is primarily optimized for development and testing environments. For production deployments, it's recommended to customize the configuration according to specific security and performance requirements.
-
The
--log-level=TRACE
option in the Memgraph service enables detailed logging. This setting is adjustable to suit different phases of development and testing, providing flexibility in monitoring and troubleshooting.
Docker Compose for Memgraph MAGE image
The Memgraph MAGE image contains:
- Memgraph - the database that holds your data
- MAGE - graph algorithms and modules library
version: "3"
services:
memgraph-mage:
image: "memgraph/memgraph-mage"
volumes:
- mg_lib:/var/lib/memgraph
- mg_log:/var/log/memgraph
- mg_etc:/etc/memgraph
ports:
- "7687:7687"
- "7444:7444"
command: ["--log-level=TRACE"]
volumes:
mg_lib:
mg_log:
mg_etc:
The port 7687
is used for communication with Memgraph via Bolt protocol, while
the port 7444
is there so that you can see logs from Memgraph inside the
Memgraph Lab application. We specified three useful volumes:
mg_lib
- directory containing data that enables data persistencymg_log
- directory containing log filesmg_etc
- directory containing the configuration file
The exact location of the local directories depends on your specific setup.
We recommend using the command
option to customize Memgraph's runtime
flags instead of setting them through
entrypoint
. This approach enhances your flexibility and aligns with Docker
best practices, allowing you to easily adjust your container's behavior without
altering its foundational settings.
In the above example,
you can see how to set --log-level
to TRACE
. Since the MAGE library is
included in this image, you can use the available graph algorithms.
Docker Compose for Memgraph image
The Memgraph image contains the database that holds your data.
version: "3"
services:
memgraph:
image: "memgraph/memgraph"
ports:
- "7687:7687"
- "7444:7444"
volumes:
- mg_lib:/var/lib/memgraph
- mg_log:/var/log/memgraph
- mg_etc:/etc/memgraph
command: ["--log-level=TRACE"]
volumes:
mg_lib:
mg_log:
mg_etc:
The port 7687
is used for communication with Memgraph via Bolt protocol, while
the port 7444
is there so that you can see logs from Memgraph inside the
Memgraph Lab application. We specified three useful volumes:
mg_lib
- directory containing data that enables data persistencymg_log
- directory containing log filesmg_etc
- directory containing the configuration file
The exact location of the local directories depends on your specific setup.
We recommend using the command
option to customize Memgraph's runtime
flags instead of setting them through
entrypoint
. This approach enhances your flexibility and aligns with Docker
best practices, allowing you to easily adjust your container's behavior without
altering its foundational settings.
In the above example, you can see how to set --log-level
to TRACE
. Since this image doesn't have
the MAGE library included, you won't be able to use graph algorithms.
Want to see applications built with Memgraph and Docker Compose? Check out Memgraph's Github (opens in a new tab) repositories.
Issues when running Memgraph and Lab within the same Docker compose
When running both Memgraph and Lab services within the same Docker Compose file,
the QUICK_CONNECT_MG_HOST
environment variable should be set to the name of
the Memgraph database service as defined in your Docker Compose file. This
allows the Lab service to correctly resolve and connect to the Memgraph service.
Here's an example snippet for your docker-compose.yml
:
services:
memgraph:
image: memgraph/memgraph
ports:
- "7687:7687"
lab:
image: memgraph/lab
ports:
- "3000:3000"
environment:
QUICK_CONNECT_MG_HOST: memgraph
In this configuration, QUICK_CONNECT_MG_HOST
is set to memgraph
, which is
the service name of the Memgraph database within the Docker Compose network,
enabling the direct communication between the Lab and Memgraph services. You can
also use the QUICK_CONNECT_MG_PORT
environment variable to specify the quick
connect port number, e.g. QUICK_CONNECT_MG_PORT: 7688
Docker Compose for Memgraph Platform image up to version 2.14
These instructions are listed here as a reference for legacy installations.
Starting with version 2.15, Memgraph Platform transitions to a multi-container application. This upgrade moves from a single Docker image to separate containers for Memgraph+MAGE and Memgraph Lab, utilizing Docker Compose for deployment and management.
Please note that the Memgraph Platform Docker image (opens in a new tab) is no longer being updated.
The memgraph-platform
Docker image contains:
- Memgraph database - the database that holds your data
- Memgraph Lab - visual user interface for running queries and visualizing graph data
- mgconsole - command-line interface for running queries
- MAGE - graph algorithms and modules library
version: "3"
services:
memgraph-platform:
image: "memgraph/memgraph-platform"
ports:
- "7687:7687"
- "3000:3000"
- "7444:7444"
volumes:
- mg_lib:/var/lib/memgraph
- mg_log:/var/log/memgraph
- mg_etc:/etc/memgraph
env_file:
- /path_to/.env # Replace this with the actual path to your .env file
entrypoint: ["/usr/bin/supervisord"]
volumes:
mg_lib:
mg_log:
mg_etc:
and your .env
file contains configuration flags you want to set:
MEMGRAPH="--log-level=TRACE"
The port 7687
is used for communication with Memgraph via Bolt protocol. The
port 3000
is exposed because Memgraph Lab will be running as a web application
on localhost:3000
, while the port 7444
is there so that you can see logs
from Memgraph inside Memgraph Lab. We specified three useful volumes:
mg_lib
- directory containing data that enables data persistencymg_log
- directory containing log filesmg_etc
- directory containing the configuration file
The exact location of the local directories depends on your specific setup.
Configuration settings can be changed
by setting the value of the MEMGRAPH
environment variable. In the above
example, you can see how to set --log-level
to TRACE
. Since Memgraph
Platform is not a single service, the process manager
supervisord
(opens in a new tab)
is used as the main running process in the entrypoint
. The MAGE library is
included in this image, so you can use the available graph algorithms.