From 69e72667365247b63430dee88194e8f0d7c28edc Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Fri, 29 May 2020 12:37:35 +0200
Subject: [PATCH] feat(devcontainer): add devcontainer settings for dev
 environment

---
 .devcontainer/Dockerfile        | 11 +++++++++++
 .devcontainer/devcontainer.json | 16 ++++++++++++++++
 README.md                       | 21 +++++++++++++++++++++
 3 files changed, 48 insertions(+)
 create mode 100644 .devcontainer/Dockerfile
 create mode 100644 .devcontainer/devcontainer.json

diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 0000000000..4e80eec90e
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,11 @@
+FROM php:latest
+
+RUN apt-get update && apt-get install -y \
+    libicu-dev \
+    && docker-php-ext-install intl
+
+COPY --from=composer /usr/bin/composer /usr/bin/composer
+
+RUN apt-get update && \
+    apt-get upgrade -y && \
+    apt-get install -y git
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000000..d0112e2341
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,16 @@
+// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
+// https://github.com/microsoft/vscode-dev-containers/tree/v0.117.1/containers/docker-existing-dockerfile
+{
+	"name": "Existing Dockerfile",
+	"dockerFile": "./Dockerfile",
+	"settings": {
+		"terminal.integrated.shell.linux": null
+	},
+	"extensions": [
+		"mikestead.dotenv",
+		"bmewburn.vscode-intelephense-client",
+		"streetsidesoftware.code-spell-checker",
+		"naumovs.color-highlight",
+		"heybourn.headwind"
+	]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 5c2e3a75db..e1442e771c 100644
--- a/README.md
+++ b/README.md
@@ -128,3 +128,24 @@ docker-compose down
 ```
 
 Check [docker](https://docs.docker.com/engine/reference/commandline/docker/) and [docker-compose](https://docs.docker.com/compose/reference/) documentations for more insights.
+
+### Developing inside a Container
+
+If you're working in VSCode, you can take advantage of the `./.devcontainer/` folder. It defines a development container with preinstalled VSCode extensions so you don't have to worry about them. The container will be loaded with php, composer and git:
+
+1. Install the VSCode extension [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
+2. `Ctrl/Cmd + Shift + P` > `Open in container`
+
+The VSCode window will reload inside the dev container.
+
+You can check that the required packages are running in the console (`Terminal` > `New Terminal`):
+
+```bash
+php -v
+
+composer -V
+
+git version
+```
+
+For more info, see [VSCode Remote Containers](https://code.visualstudio.com/docs/remote/containers)
-- 
GitLab