Skip to content

Commit 7431790

Browse files
authored
add configuration to use react-express-mongo sample with Docker Dev Environments feature (#271)
Signed-off-by: Guillaume Lours <[email protected]>
1 parent 9f4f9d8 commit 7431790

File tree

5 files changed

+96
-4
lines changed

5 files changed

+96
-4
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
services:
2+
frontend:
3+
build:
4+
context: frontend
5+
target: dev-envs
6+
ports:
7+
- 3000:3000
8+
stdin_open: true
9+
volumes:
10+
- /var/run/docker.sock:/var/run/docker.sock
11+
restart: always
12+
networks:
13+
- react-express
14+
depends_on:
15+
- backend
16+
17+
backend:
18+
restart: always
19+
build:
20+
context: backend
21+
target: dev-envs
22+
volumes:
23+
- /var/run/docker.sock:/var/run/docker.sock
24+
depends_on:
25+
- mongo
26+
networks:
27+
- express-mongo
28+
- react-express
29+
expose:
30+
- 3000
31+
mongo:
32+
container_name: mongo
33+
restart: always
34+
image: mongo:4.2.0
35+
volumes:
36+
- ./data:/data/db
37+
networks:
38+
- express-mongo
39+
expose:
40+
- 27017
41+
networks:
42+
react-express:
43+
express-mongo:

react-express-mongodb/backend/Dockerfile

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
FROM node:lts-buster-slim
1+
# syntax=docker/dockerfile:1.4
2+
3+
FROM node:lts-buster-slim AS development
24

35
# Create app directory
46
WORKDIR /usr/src/app
@@ -12,3 +14,18 @@ COPY . /usr/src/app
1214
EXPOSE 3000
1315

1416
CMD [ "npm", "run", "dev" ]
17+
18+
FROM development as dev-envs
19+
RUN <<EOF
20+
apt-get update
21+
apt-get install -y --no-install-recommends git
22+
EOF
23+
24+
RUN <<EOF
25+
useradd -s /bin/bash -m vscode
26+
groupadd docker
27+
usermod -aG docker vscode
28+
EOF
29+
# install Docker tools (cli, buildx, compose)
30+
COPY --from=gloursdocker/docker / /
31+
CMD [ "npm", "run", "dev" ]

react-express-mongodb/compose.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
services:
22
frontend:
3-
build: frontend
3+
build:
4+
context: frontend
5+
target: development
46
ports:
57
- 3000:3000
68
stdin_open: true
@@ -17,7 +19,9 @@ services:
1719
backend:
1820
container_name: backend
1921
restart: always
20-
build: backend
22+
build:
23+
context: backend
24+
target: development
2125
volumes:
2226
- ./backend:/usr/src/app
2327
- /usr/src/app/node_modules

react-express-mongodb/frontend/Dockerfile

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
# syntax=docker/dockerfile:1.4
2+
13
# Create image based on the official Node image from dockerhub
2-
FROM node:lts-buster
4+
FROM node:lts-buster AS development
35

46
# Create app directory
57
WORKDIR /usr/src/app
@@ -22,3 +24,18 @@ EXPOSE 3000
2224

2325
# Serve the app
2426
CMD ["npm", "start"]
27+
28+
FROM development as dev-envs
29+
RUN <<EOF
30+
apt-get update
31+
apt-get install -y --no-install-recommends git
32+
EOF
33+
34+
RUN <<EOF
35+
useradd -s /bin/bash -m vscode
36+
groupadd docker
37+
usermod -aG docker vscode
38+
EOF
39+
# install Docker tools (cli, buildx, compose)
40+
COPY --from=gloursdocker/docker / /
41+
CMD [ "npm", "start" ]

react-express-mysql/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,14 @@ Removing react-express-mysql_db_1 ... done
9797
Removing network react-express-mysql_default
9898
9999
```
100+
101+
## Use with Docker Development Environments
102+
103+
You can use this sample with the Dev Environments feature of Docker Desktop.
104+
105+
![Screenshot of creating a Dev Environment in Docker Desktop](../dev-envs.png)
106+
107+
To develop directly on the services inside containers, use the HTTPS Git url of the sample:
108+
```
109+
https://github.com/docker/awesome-compose/tree/master/react-express-mongodb
110+
```

0 commit comments

Comments
 (0)