From 22b404ebf96f8e649c4feb204d5eb2e3f1f79a1b Mon Sep 17 00:00:00 2001 From: Ondrej Misak Date: Sat, 19 Feb 2022 18:38:48 +0100 Subject: [PATCH 1/4] docs: add Docker deployment document --- docs/components/atoms/logo/LogoDocker.vue | 14 ++ docs/content/3.docs/3.deployment/7.docker.md | 129 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 docs/components/atoms/logo/LogoDocker.vue create mode 100644 docs/content/3.docs/3.deployment/7.docker.md diff --git a/docs/components/atoms/logo/LogoDocker.vue b/docs/components/atoms/logo/LogoDocker.vue new file mode 100644 index 00000000000..50c792ebe51 --- /dev/null +++ b/docs/components/atoms/logo/LogoDocker.vue @@ -0,0 +1,14 @@ + diff --git a/docs/content/3.docs/3.deployment/7.docker.md b/docs/content/3.docs/3.deployment/7.docker.md new file mode 100644 index 00000000000..bdfd62965a8 --- /dev/null +++ b/docs/content/3.docs/3.deployment/7.docker.md @@ -0,0 +1,129 @@ +--- +icon: LogoDocker +--- + +# Docker + +How to develop, build and deploy Nuxt via Docker. + +::list + +- Support for HMR in development +- Standardized environment for development and production +- Minimalist and stable image +- Run your own Docker image on AWS, Azure, Kubernetes, Swarm etc. +:: + +## Setup + +**Note**: You need to have **Docker** and **docker-compose** installed. + +### Preparation + +Let's start by creating **two files in the project root**, `Dockerfile` and `docker-compose.yml` with the following contents: + +```dockerfile [Dockerfile] +FROM node:17.5-alpine as nuxtBuild + +WORKDIR /nuxtBuild + +COPY ./ /nuxtBuild + +RUN yarn install && yarn run build + +### + +FROM node:17.5-alpine + +WORKDIR /app + +COPY ./package.json /app/package.json +COPY --from=nuxtBuild /nuxtBuild/.output /app/.output + +RUN ( \ + echo '#!/bin/sh'; \ + echo 'if [[ "$NODE_ENV" == "development" ]]; then yarn run dev; else node /app/.output/server/index.mjs; fi' \ + ) > /usr/local/bin/nuxt-entrypoint && chmod +x /usr/local/bin/nuxt-entrypoint + +ENV HOST=0.0.0.0 + +ENTRYPOINT ["nuxt-entrypoint"] +``` + +and + +```yaml [docker-compose.yml] +version: "3" +services: + nuxt: + build: . + environment: + NODE_ENV: development + volumes: + - ".:/app" + ports: + - "3000:3000" +``` + +### Local development + +For local development, just run docker compose to launch your Nuxt project: + +::code-group + +```bash [Docker compose] +docker-compose up -d +``` + +```bash [Docker compose v2] +docker compose up -d +``` + +:: + +You can use following command to **execute into container**: + +::code-group + +```bash [Docker compose] +docker-compose exec nuxt sh +``` + +```bash [Docker compose v2] +docker compose exec nuxt sh +``` + +:: + +**Nuxt will be available at [http://localhost:3000](http://localhost:3000)**. + +### Build into production + +To build into production you need to modify the environment `NODE_ENV` and remove `volumes` property, example: + +```yaml [docker-compose.yml] +version: "3" +services: + nuxt: + build: . + environment: + NODE_ENV: production + ports: + - "3000:3000" +``` + +Then just run: + +::code-group + +```bash [Docker compose] +docker-compose build +``` + +```bash [Docker compose v2] +docker compose build +``` + +:: + +Voila, your production **image is ready** and prepared for deployment into AWS, Kubernetes etc. From ad00ec1c7b0a14bf24d9c639aa53aa3293a9aafc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Mis=C3=A1k?= Date: Mon, 21 Feb 2022 12:34:49 +0100 Subject: [PATCH 2/4] Update docs/content/3.docs/3.deployment/7.docker.md Co-authored-by: pooya parsa --- docs/content/3.docs/3.deployment/7.docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/3.docs/3.deployment/7.docker.md b/docs/content/3.docs/3.deployment/7.docker.md index bdfd62965a8..0eb8d1a3d44 100644 --- a/docs/content/3.docs/3.deployment/7.docker.md +++ b/docs/content/3.docs/3.deployment/7.docker.md @@ -16,7 +16,7 @@ How to develop, build and deploy Nuxt via Docker. ## Setup -**Note**: You need to have **Docker** and **docker-compose** installed. +**Note**: You need to have [**Docker**](https://www.docker.com/get-started) and [**docker-compose**](https://docs.docker.com/compose/install/) installed. ### Preparation From 971ef56a3c12567d5a97534368d7ad30dd571f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Mis=C3=A1k?= Date: Mon, 21 Feb 2022 12:35:05 +0100 Subject: [PATCH 3/4] Update docs/content/3.docs/3.deployment/7.docker.md Co-authored-by: pooya parsa --- docs/content/3.docs/3.deployment/7.docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/3.docs/3.deployment/7.docker.md b/docs/content/3.docs/3.deployment/7.docker.md index 0eb8d1a3d44..41aefc60765 100644 --- a/docs/content/3.docs/3.deployment/7.docker.md +++ b/docs/content/3.docs/3.deployment/7.docker.md @@ -23,7 +23,7 @@ How to develop, build and deploy Nuxt via Docker. Let's start by creating **two files in the project root**, `Dockerfile` and `docker-compose.yml` with the following contents: ```dockerfile [Dockerfile] -FROM node:17.5-alpine as nuxtBuild +FROM node:16-alpine as nuxtBuild WORKDIR /nuxtBuild From 12c2237fb43d18cee50243002818c1c09c0b6de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Mis=C3=A1k?= Date: Mon, 21 Feb 2022 12:40:33 +0100 Subject: [PATCH 4/4] Update docs/content/3.docs/3.deployment/7.docker.md Co-authored-by: pooya parsa --- docs/content/3.docs/3.deployment/7.docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/3.docs/3.deployment/7.docker.md b/docs/content/3.docs/3.deployment/7.docker.md index 41aefc60765..77ea90f3ddb 100644 --- a/docs/content/3.docs/3.deployment/7.docker.md +++ b/docs/content/3.docs/3.deployment/7.docker.md @@ -33,7 +33,7 @@ RUN yarn install && yarn run build ### -FROM node:17.5-alpine +FROM node:16-alpine WORKDIR /app