From 6183aab4d4b2e89411e6fddab3571ba812df76d7 Mon Sep 17 00:00:00 2001 From: HamidNE Date: Sat, 1 Aug 2020 19:24:56 +0430 Subject: [PATCH 1/8] add Dockerfile to project --- packages/cna-template/template/_Dockerfile | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/cna-template/template/_Dockerfile diff --git a/packages/cna-template/template/_Dockerfile b/packages/cna-template/template/_Dockerfile new file mode 100644 index 000000000..3923d99eb --- /dev/null +++ b/packages/cna-template/template/_Dockerfile @@ -0,0 +1,25 @@ +# Dockerfile +FROM node:14-alpine + +# create destination directory +RUN mkdir -p /app +WORKDIR /app + +# update and install dependency +RUN apk update && apk upgrade +RUN apk add git + +# install packages +COPY package.json . +COPY yarn.lock . +RUN yarn install + +# copy project to directory +COPY . . +RUN yarn build + +EXPOSE 80 +ENV NUXT_PORT=80 +ENV HOST 0.0.0.0 + +CMD [ "yarn", "start" ] From 16be1d9e444308eeea9a5f61fa9349e4aa718baa Mon Sep 17 00:00:00 2001 From: HamidNE Date: Sat, 1 Aug 2020 19:25:48 +0430 Subject: [PATCH 2/8] add new option --- packages/create-nuxt-app/lib/prompts.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/create-nuxt-app/lib/prompts.js b/packages/create-nuxt-app/lib/prompts.js index 4232455c4..99755fdea 100644 --- a/packages/create-nuxt-app/lib/prompts.js +++ b/packages/create-nuxt-app/lib/prompts.js @@ -112,5 +112,14 @@ module.exports = [ { name: 'Semantic Pull Requests', value: 'semantic-pull-requests' } ], default: [] + }, + { + name: 'devOps', + message: 'DevOps tools:', + type: 'checkbox', + choices: [ + { name: 'Dockerize project', value: 'docker' } + ], + default: [] } ] From 767be5290f9d01693ea9bc9be3cc626b7f2e10fb Mon Sep 17 00:00:00 2001 From: HamidNE Date: Sat, 1 Aug 2020 19:30:24 +0430 Subject: [PATCH 3/8] add docker compose config --- packages/cna-template/template/_docker-compose.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/cna-template/template/_docker-compose.yml diff --git a/packages/cna-template/template/_docker-compose.yml b/packages/cna-template/template/_docker-compose.yml new file mode 100644 index 000000000..091f8882c --- /dev/null +++ b/packages/cna-template/template/_docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.7' + +services: + app: + build: . + image: <%= name %>/<%= name %> + container_name: <%= name %> + restart: always + volumes: + - /app/node_modules + +volumes: + <%= name %>-web-volume: From 100aff4198d34f92159708088e9570bb7fd1eb65 Mon Sep 17 00:00:00 2001 From: HamidNE Date: Sat, 1 Aug 2020 19:34:29 +0430 Subject: [PATCH 4/8] add dockerize files to project --- packages/create-nuxt-app/lib/saofile.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/create-nuxt-app/lib/saofile.js b/packages/create-nuxt-app/lib/saofile.js index c899c0dac..e8642ed1e 100644 --- a/packages/create-nuxt-app/lib/saofile.js +++ b/packages/create-nuxt-app/lib/saofile.js @@ -81,6 +81,8 @@ module.exports = { '_.eslintrc.js': 'linter.includes("eslint")', '_.prettierrc': 'linter.includes("prettier")', '_jsconfig.json': 'devTools.includes("jsconfig.json")', + _Dockerfile: 'devOps.includes("docker")', + '_docker-compose.yml': 'devOps.includes("docker")', 'tsconfig.json': 'language.includes("ts")', 'semantic.yml': 'devTools.includes("semantic-pull-requests")', '_stylelint.config.js': 'linter.includes("stylelint")' @@ -96,6 +98,8 @@ module.exports = { '_.prettierrc': '.prettierrc', '_.eslintrc.js': '.eslintrc.js', '_jsconfig.json': 'jsconfig.json', + _Dockerfile: 'Dockerfile', + '_docker-compose.yml': 'docker-compose.yml', '_stylelint.config.js': 'stylelint.config.js', 'semantic.yml': '.github/semantic.yml' } From 4d7117c17c215f4168ace650d67a5d0100acb0ff Mon Sep 17 00:00:00 2001 From: HamidNE Date: Sat, 1 Aug 2020 19:59:53 +0430 Subject: [PATCH 5/8] fixed test error --- packages/create-nuxt-app/lib/prompts.js | 5 +- .../test/snapshots/index.test.js.md | 214 ++++++++++++++++++ .../test/snapshots/index.test.js.snap | Bin 7397 -> 7597 bytes 3 files changed, 217 insertions(+), 2 deletions(-) diff --git a/packages/create-nuxt-app/lib/prompts.js b/packages/create-nuxt-app/lib/prompts.js index 99755fdea..fe9fe663f 100644 --- a/packages/create-nuxt-app/lib/prompts.js +++ b/packages/create-nuxt-app/lib/prompts.js @@ -116,10 +116,11 @@ module.exports = [ { name: 'devOps', message: 'DevOps tools:', - type: 'checkbox', + type: 'list', choices: [ + { name: 'None', value: 'none' }, { name: 'Dockerize project', value: 'docker' } ], - default: [] + default: 'none' } ] diff --git a/packages/create-nuxt-app/test/snapshots/index.test.js.md b/packages/create-nuxt-app/test/snapshots/index.test.js.md index 6792b3995..9815f787f 100644 --- a/packages/create-nuxt-app/test/snapshots/index.test.js.md +++ b/packages/create-nuxt-app/test/snapshots/index.test.js.md @@ -4202,3 +4202,217 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ` + +## verify devOps: Dockerize project + +> Generated files + + [ + '.editorconfig', + '.gitignore', + 'Dockerfile', + 'README.md', + 'assets/README.md', + 'components/Logo.vue', + 'components/README.md', + 'docker-compose.yml', + 'layouts/README.md', + 'layouts/default.vue', + 'middleware/README.md', + 'nuxt.config.js', + 'package.json', + 'pages/README.md', + 'pages/index.vue', + 'plugins/README.md', + 'static/README.md', + 'static/favicon.ico', + 'store/README.md', + ] + +> package.json + + { + dependencies: { + nuxt: '^2.14.0', + }, + devDependencies: {}, + private: true, + scripts: { + build: 'nuxt build', + dev: 'nuxt', + generate: 'nuxt generate', + start: 'nuxt start', + }, + } + +## verify devOps: None + +> Generated files + + [ + '.editorconfig', + '.gitignore', + 'README.md', + 'assets/README.md', + 'components/Logo.vue', + 'components/README.md', + 'layouts/README.md', + 'layouts/default.vue', + 'middleware/README.md', + 'nuxt.config.js', + 'package.json', + 'pages/README.md', + 'pages/index.vue', + 'plugins/README.md', + 'static/README.md', + 'static/favicon.ico', + 'store/README.md', + ] + +> package.json + + { + dependencies: { + nuxt: '^2.14.0', + }, + devDependencies: {}, + private: true, + scripts: { + build: 'nuxt build', + dev: 'nuxt', + generate: 'nuxt generate', + start: 'nuxt start', + }, + } + +## verify devOps: Dockerize project + +> Generated nuxt.config.js + + `␊ + export default {␊ + /*␊ + ** Nuxt rendering mode␊ + ** See https://nuxtjs.org/api/configuration-mode␊ + */␊ + mode: 'universal',␊ + /*␊ + ** Nuxt target␊ + ** See https://nuxtjs.org/api/configuration-target␊ + */␊ + target: 'server',␊ + /*␊ + ** Headers of the page␊ + ** See https://nuxtjs.org/api/configuration-head␊ + */␊ + head: {␊ + title: process.env.npm_package_name || '',␊ + meta: [␊ + { charset: 'utf-8' },␊ + { name: 'viewport', content: 'width=device-width, initial-scale=1' },␊ + { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }␊ + ],␊ + link: [␊ + { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }␊ + ]␊ + },␊ + /*␊ + ** Global CSS␊ + */␊ + css: [␊ + ],␊ + /*␊ + ** Plugins to load before mounting the App␊ + ** https://nuxtjs.org/guide/plugins␊ + */␊ + plugins: [␊ + ],␊ + /*␊ + ** Auto import components␊ + ** See https://nuxtjs.org/api/configuration-components␊ + */␊ + components: true,␊ + /*␊ + ** Nuxt.js dev-modules␊ + */␊ + buildModules: [␊ + ],␊ + /*␊ + ** Nuxt.js modules␊ + */␊ + modules: [␊ + ],␊ + /*␊ + ** Build configuration␊ + ** See https://nuxtjs.org/api/configuration-build/␊ + */␊ + build: {␊ + }␊ + }␊ + ` + +## verify devOps: None + +> Generated nuxt.config.js + + `␊ + export default {␊ + /*␊ + ** Nuxt rendering mode␊ + ** See https://nuxtjs.org/api/configuration-mode␊ + */␊ + mode: 'universal',␊ + /*␊ + ** Nuxt target␊ + ** See https://nuxtjs.org/api/configuration-target␊ + */␊ + target: 'server',␊ + /*␊ + ** Headers of the page␊ + ** See https://nuxtjs.org/api/configuration-head␊ + */␊ + head: {␊ + title: process.env.npm_package_name || '',␊ + meta: [␊ + { charset: 'utf-8' },␊ + { name: 'viewport', content: 'width=device-width, initial-scale=1' },␊ + { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }␊ + ],␊ + link: [␊ + { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }␊ + ]␊ + },␊ + /*␊ + ** Global CSS␊ + */␊ + css: [␊ + ],␊ + /*␊ + ** Plugins to load before mounting the App␊ + ** https://nuxtjs.org/guide/plugins␊ + */␊ + plugins: [␊ + ],␊ + /*␊ + ** Auto import components␊ + ** See https://nuxtjs.org/api/configuration-components␊ + */␊ + components: true,␊ + /*␊ + ** Nuxt.js dev-modules␊ + */␊ + buildModules: [␊ + ],␊ + /*␊ + ** Nuxt.js modules␊ + */␊ + modules: [␊ + ],␊ + /*␊ + ** Build configuration␊ + ** See https://nuxtjs.org/api/configuration-build/␊ + */␊ + build: {␊ + }␊ + }␊ + ` diff --git a/packages/create-nuxt-app/test/snapshots/index.test.js.snap b/packages/create-nuxt-app/test/snapshots/index.test.js.snap index 3831b418934de783bb11917a994c732784929348..c97e3b49dc7d6a63efb045fcd06654a2c11404ad 100644 GIT binary patch literal 7597 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 M;*hyl9wNg310*-ZasU7T literal 7397 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 Date: Mon, 3 Aug 2020 18:08:43 +0430 Subject: [PATCH 6/8] remove unused docker volume --- packages/cna-template/template/_docker-compose.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/cna-template/template/_docker-compose.yml b/packages/cna-template/template/_docker-compose.yml index 091f8882c..3b7711664 100644 --- a/packages/cna-template/template/_docker-compose.yml +++ b/packages/cna-template/template/_docker-compose.yml @@ -6,8 +6,3 @@ services: image: <%= name %>/<%= name %> container_name: <%= name %> restart: always - volumes: - - /app/node_modules - -volumes: - <%= name %>-web-volume: From 341a3b6ffeae48f0034a01d15da3029477f2e8b7 Mon Sep 17 00:00:00 2001 From: HamidNE Date: Mon, 3 Aug 2020 18:58:47 +0430 Subject: [PATCH 7/8] rename docker option name --- packages/create-nuxt-app/lib/prompts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-nuxt-app/lib/prompts.js b/packages/create-nuxt-app/lib/prompts.js index fe9fe663f..d4bb7dfb9 100644 --- a/packages/create-nuxt-app/lib/prompts.js +++ b/packages/create-nuxt-app/lib/prompts.js @@ -119,7 +119,7 @@ module.exports = [ type: 'list', choices: [ { name: 'None', value: 'none' }, - { name: 'Dockerize project', value: 'docker' } + { name: 'Docker', value: 'docker' } ], default: 'none' } From c7cb574059eefe5933cdf8df6a3783c89f3be9cc Mon Sep 17 00:00:00 2001 From: HamidNE Date: Mon, 3 Aug 2020 19:04:05 +0430 Subject: [PATCH 8/8] fixed test error --- .../test/snapshots/index.test.js.md | 106 ++++++++++++++++++ .../test/snapshots/index.test.js.snap | Bin 7597 -> 7648 bytes 2 files changed, 106 insertions(+) diff --git a/packages/create-nuxt-app/test/snapshots/index.test.js.md b/packages/create-nuxt-app/test/snapshots/index.test.js.md index 9815f787f..55f616b6a 100644 --- a/packages/create-nuxt-app/test/snapshots/index.test.js.md +++ b/packages/create-nuxt-app/test/snapshots/index.test.js.md @@ -4416,3 +4416,109 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ` + +## verify devOps: Docker + +> Generated files + + [ + '.editorconfig', + '.gitignore', + 'Dockerfile', + 'README.md', + 'assets/README.md', + 'components/Logo.vue', + 'components/README.md', + 'docker-compose.yml', + 'layouts/README.md', + 'layouts/default.vue', + 'middleware/README.md', + 'nuxt.config.js', + 'package.json', + 'pages/README.md', + 'pages/index.vue', + 'plugins/README.md', + 'static/README.md', + 'static/favicon.ico', + 'store/README.md', + ] + +> package.json + + { + dependencies: { + nuxt: '^2.14.0', + }, + devDependencies: {}, + private: true, + scripts: { + build: 'nuxt build', + dev: 'nuxt', + generate: 'nuxt generate', + start: 'nuxt start', + }, + } + +> Generated nuxt.config.js + + `␊ + export default {␊ + /*␊ + ** Nuxt rendering mode␊ + ** See https://nuxtjs.org/api/configuration-mode␊ + */␊ + mode: 'universal',␊ + /*␊ + ** Nuxt target␊ + ** See https://nuxtjs.org/api/configuration-target␊ + */␊ + target: 'server',␊ + /*␊ + ** Headers of the page␊ + ** See https://nuxtjs.org/api/configuration-head␊ + */␊ + head: {␊ + title: process.env.npm_package_name || '',␊ + meta: [␊ + { charset: 'utf-8' },␊ + { name: 'viewport', content: 'width=device-width, initial-scale=1' },␊ + { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }␊ + ],␊ + link: [␊ + { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }␊ + ]␊ + },␊ + /*␊ + ** Global CSS␊ + */␊ + css: [␊ + ],␊ + /*␊ + ** Plugins to load before mounting the App␊ + ** https://nuxtjs.org/guide/plugins␊ + */␊ + plugins: [␊ + ],␊ + /*␊ + ** Auto import components␊ + ** See https://nuxtjs.org/api/configuration-components␊ + */␊ + components: true,␊ + /*␊ + ** Nuxt.js dev-modules␊ + */␊ + buildModules: [␊ + ],␊ + /*␊ + ** Nuxt.js modules␊ + */␊ + modules: [␊ + ],␊ + /*␊ + ** Build configuration␊ + ** See https://nuxtjs.org/api/configuration-build/␊ + */␊ + build: {␊ + }␊ + }␊ + ` diff --git a/packages/create-nuxt-app/test/snapshots/index.test.js.snap b/packages/create-nuxt-app/test/snapshots/index.test.js.snap index c97e3b49dc7d6a63efb045fcd06654a2c11404ad..25e6010454cfd47f0a212d9fc3fb15ce5a81d400 100644 GIT binary patch delta 7541 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 C6Po4# delta 7471 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𝔯>DJvkHC zaDd3nP4>&C?&~+t%;>)faJOzhmHbA)5!ANS`<&#+_b_PMH_Xy zUrTT;agu>Du_|Scc9Q%k5BYY%UI3S;T&%n-G%o*69O@wXE4TycDx%R$SRQp5+b^+! zfboxV5T%%f*#y!8k{?w)#*_qf!#Zqcv#BUa_FJA|e|Ps)Y6dIM%L65zmy5y@wsaOM zK(T3MtN&cgAI$wf$`vpC)qF`5(!23y^3X3ywT?>Zh}1vmTp(rZf zRPse!IB49Z**tMf>PD#rMnpzTK8>IyBojNGC6DMc6msU#kqQ@EmSTyh%-Ic@L|xWz ztVbbN#bcmLf;d2&N61$e%XvbtN$X$y4R=ag*RlAxB01SA-w*HnMEkS2oyC5A0zT@v zyvLP^plC-<#77Wrvt7Q;tIf2$j#SJ*ljd!i78*AdVlW1*xM;GV-#RCXD3$-t1{i*s z2@aq8$i$7HzWZBojuJnsB~f9tS(p&VlZE;c7mKJ_>Ar(s{nVJbH~m-@)O|qRZsFuuZJ5*bRe(n?})QgogUJ&fB;X&Mvz-O2@SS^ZGT2 zP)lsre@45*ox;hnTc$iUid3VXKlHNf7*cOMbrD-^U!!jfkS#sxg@`KPb7XwVQGe%8 q9t6Tk6`ctEq9~=s6wgJ8(a(&^gZsZYl>RwMEM*1(*<9~nv