Skip to content

Commit 2304fb2

Browse files
Add MongoDB extension and service (#748)
* Add MongoDB service Use mongodb-atlas-local to provide most cloud features locally * Update CHANGELOG.md * Update CHANGELOG.md --------- Co-authored-by: Taylor Otwell <taylor@laravel.com>
1 parent ea7ce73 commit 2304fb2

File tree

8 files changed

+44
-6
lines changed

8 files changed

+44
-6
lines changed

bin/sail

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ function display_help {
8383
echo " ${GREEN}sail mysql${NC} Start a MySQL CLI session within the 'mysql' container"
8484
echo " ${GREEN}sail mariadb${NC} Start a MySQL CLI session within the 'mariadb' container"
8585
echo " ${GREEN}sail psql${NC} Start a PostgreSQL CLI session within the 'pgsql' container"
86+
echo " ${GREEN}sail mongodb${NC} Start a Mongo Shell session within the 'mongodb' container"
8687
echo " ${GREEN}sail redis${NC} Start a Redis CLI session within the 'redis' container"
8788
echo
8889
echo "${YELLOW}Debugging:${NC}"
@@ -526,6 +527,18 @@ elif [ "$1" == "root-shell" ] || [ "$1" == "root-bash" ]; then
526527
sail_is_not_running
527528
fi
528529

530+
# Initiate a MongoDB Shell within the "mongodb" container...
531+
elif [ "$1" == "mongodb" ]; then
532+
shift 1
533+
534+
if [ "$EXEC" == "yes" ]; then
535+
ARGS+=(exec)
536+
[ ! -t 0 ] && ARGS+=(-T)
537+
ARGS+=(mongodb mongosh --port "${FORWARD_MONGODB_PORT:-27017}" --username "$MONGODB_USERNAME" --password "$MONGODB_PASSWORD" --authenticationDatabase admin)
538+
else
539+
sail_is_not_running
540+
fi
541+
529542
# Initiate a Redis CLI terminal session within the "redis" container...
530543
elif [ "$1" == "redis" ]; then
531544
shift 1

runtimes/8.0/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ RUN apt-get update && apt-get upgrade -y \
2727
&& apt-get update \
2828
&& apt-get install -y php8.0-cli php8.0-dev \
2929
php8.0-pgsql php8.0-sqlite3 php8.0-gd php8.0-imagick \
30-
php8.0-curl php8.0-memcached \
30+
php8.0-curl php8.0-memcached php8.0-mongodb \
3131
php8.0-imap php8.0-mysql php8.0-mbstring \
3232
php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
3333
php8.0-intl php8.0-readline php8.0-pcov \

runtimes/8.1/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ RUN apt-get update && apt-get upgrade -y \
2727
&& apt-get update \
2828
&& apt-get install -y php8.1-cli php8.1-dev \
2929
php8.1-pgsql php8.1-sqlite3 php8.1-gd php8.1-imagick \
30-
php8.1-curl \
30+
php8.1-curl php8.1-mongodb \
3131
php8.1-imap php8.1-mysql php8.1-mbstring \
3232
php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \
3333
php8.1-intl php8.1-readline \

runtimes/8.2/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ RUN apt-get update && apt-get upgrade -y \
2727
&& apt-get update \
2828
&& apt-get install -y php8.2-cli php8.2-dev \
2929
php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \
30-
php8.2-curl \
30+
php8.2-curl php8.2-mongodb \
3131
php8.2-imap php8.2-mysql php8.2-mbstring \
3232
php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \
3333
php8.2-intl php8.2-readline \

runtimes/8.3/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ RUN apt-get update && apt-get upgrade -y \
2828
&& apt-get update \
2929
&& apt-get install -y php8.3-cli php8.3-dev \
3030
php8.3-pgsql php8.3-sqlite3 php8.3-gd \
31-
php8.3-curl \
31+
php8.3-curl php8.3-mongodb \
3232
php8.3-imap php8.3-mysql php8.3-mbstring \
3333
php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \
3434
php8.3-intl php8.3-readline \

runtimes/8.4/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ RUN apt-get update && apt-get upgrade -y \
2828
&& apt-get update \
2929
&& apt-get install -y php8.4-cli php8.4-dev \
3030
php8.4-pgsql php8.4-sqlite3 php8.4-gd \
31-
php8.4-curl \
31+
php8.4-curl php8.4-mongodb \
3232
php8.4-imap php8.4-mysql php8.4-mbstring \
3333
php8.4-xml php8.4-zip php8.4-bcmath php8.4-soap \
3434
php8.4-intl php8.4-readline \

src/Console/Concerns/InteractsWithDockerComposeServices.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ trait InteractsWithDockerComposeServices
1616
'mysql',
1717
'pgsql',
1818
'mariadb',
19+
'mongodb',
1920
'redis',
2021
'memcached',
2122
'meilisearch',
@@ -92,7 +93,7 @@ protected function buildDockerCompose(array $services)
9293
// Merge volumes...
9394
collect($services)
9495
->filter(function ($service) {
95-
return in_array($service, ['mysql', 'pgsql', 'mariadb', 'redis', 'meilisearch', 'typesense', 'minio']);
96+
return in_array($service, ['mysql', 'pgsql', 'mariadb', 'mongodb', 'redis', 'meilisearch', 'typesense', 'minio']);
9697
})->filter(function ($service) use ($compose) {
9798
return ! array_key_exists($service, $compose['volumes'] ?? []);
9899
})->each(function ($service) use (&$compose) {
@@ -163,6 +164,11 @@ protected function replaceEnvVariables(array $services)
163164
$environment = str_replace('REDIS_HOST=127.0.0.1', 'REDIS_HOST=redis', $environment);
164165
}
165166

167+
if (in_array('mongodb', $services)) {
168+
$environment .= "\nMONGODB_URI=mongodb://mongodb:27017";
169+
$environment .= "\nMONGODB_DATABASE=laravel";
170+
}
171+
166172
if (in_array('meilisearch', $services)) {
167173
$environment .= "\nSCOUT_DRIVER=meilisearch";
168174
$environment .= "\nMEILISEARCH_HOST=http://meilisearch:7700\n";

stubs/mongodb.stub

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
mongodb:
2+
image: 'mongodb/mongodb-atlas-local:latest'
3+
environment:
4+
- MONGODB_INITDB_ROOT_USERNAME=${MONGODB_USERNAME:-}
5+
- MONGODB_INITDB_ROOT_PASSWORD=${MONGODB_PASSWORD:-}
6+
volumes:
7+
- 'sail-mongodb:/data/db'
8+
ports:
9+
- '${FORWARD_MONGODB_PORT:-27017}:27017'
10+
networks:
11+
- sail
12+
healthcheck:
13+
test:
14+
- CMD
15+
- mongosh
16+
- 'mongodb://localhost:27017/admin'
17+
- '--eval=db.runCommand({ping:1})'
18+
retries: 3
19+
timeout: 5s

0 commit comments

Comments
 (0)