Автор оригинала: Artem Golovin.
…
…
Предварительные требования:
- Основные Вуэ.js знания (хотя вы можете использовать это руководство для обслуживания практически всего);
- Основные докеров понимание
- …
0. …
Докеров | Докку | Цифровой океан
1. …
2. Докастеризация приложения
//Dockerfile FROM node:7.10.0 # use changes to package.json to force Docker not to use the cache# when we change our application's nodejs dependencies:ADD package.json /tmp/package.jsonRUN cd /tmp && yarn installRUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app # From here we load our application's code in, therefore the previous docker# "layer" thats been cached will be used if possibleWORKDIR /usr/src/appADD . /usr/src/app RUN npm run buildRUN rm -rf ./buildRUN rm -rf ./testRUN rm -rf ./src ENV PORT=80 EXPOSE 80 CMD ["npm", "start"] //.dockerignore dist node_modules
3. Создать простой файл сервера Express для обслуживания приложения
//Server.js, don't forget to add express & ejs to packagesconst express = require('express') const app = express()const port = process.env.PORT || 3003const router = express.Router() app.use(express.static(`${__dirname}/dist`)) // set the static files location for the static html app.engine('.html', require('ejs').renderFile) app.set('views', `${__dirname}/dist`) router.get('/*', (req, res, next) => { res.sendFile(`${__dirname}/dist/index.html`)}) app.use('/', router) app.listen(port)console.log('App running on port', port)
Кстати, вы можете обслуживать приложение с NGINX напрямую и более … Потому что после компиляции приложению не нужны узлы.js env. Однако, чтобы упростить весь процесс, я создаю приложение и запускаю сервер с тем же узлом.js среде.
4. Создание и настройка машины DigitalOcean
// To generate a new ssh key: sh-keygen -t rsa -b 4096 -C "your_email@example.com" // To turn on SWAP on the machine (yes, it's "one" line) sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && swapon /swapfile && sudo echo "/swapfile none swap sw 0 0" >> /etc/fstab && sudo sysctl vm.swappiness=10 && sudo sysctl vm.vfs_cache_pressure=50 && sudo echo "vm.swappiness=10" >> /etc/sysctl.conf && sudo echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
5. Развертывание приложения на сервере
// The only command you will need in the future deployments :-) git add . --all && git commit -m "" && git push server
Вместо заключения
После всех этих шагов вы сможете повторно развернуть приложение за считанные секунды без хлопот и копирования кода вручную.
Что еще можно сделать?
— Прежде всего, вы можете подключить домен и получить SSL-сертификат. Докку поддерживает все это из коробки.
… Хорошо для нас, это можно легко сделать с различными КИ, такими как Трэвис или … (Я мог бы сделать учебник об этом).
— И, наконец, вам может понадобиться бэкэнд. Для него доверьте свой бэкэнд и добавьте его в качестве второго контейнера (aka …
… Если вы заблудились или вам нужна помощь в создании/развертывании приложения vue.js, не стесняйтесь дайте мне сообщение на codementor .
.. С. Также не стесняйтесь делиться своими производственными настройками в комментариях ниже.
Оригинал: «https://www.codementor.io/@artemgolovin/how-to-deploy-vue-js-app-in-one-line-with-docker-amp-digital-ocean-9sz8x46w3»