Configuration standard dockerfile et docker-composer.yml

Xmo 2021-09-15 07:26:56
configuration standard dockerfile et docker-composer.yml


Cet article fournit deux configurations de conteneurs,Dont: Nuxt Le scénario pour est de copier le fichier dans le conteneur,Et contre Vite Dans les deux cas, les volumes sont montés,Les deux options présentent des avantages et des inconvénients,La méthode de copie ne suspend pas le service en raison d'un changement de fichier source,Le montage d'un volume est étroitement lié à l'hôte hôte,Il peut y avoir des conflits d'autorité nécessitant une autorisation supplémentaire.

Nuxt

J'ai utilisé yarn --production C'est basé sur mon opinion package.json Il a été trié,Assurez - vous de ne pas devDependencies Peut être emballé normalement dans des conditions,Vous devez confirmer si votre environnement est le même.

Tu peux mettre yarn --production Mettez - le sur Dockerfile Moyenne,On peut aussi le mettre dans docker-compose.yml De command Moyenne,Mais parce que le mode de démarrage est l'état de veille,Si vous le mettez dans docker-compose.yml Moyenne,Des moyens supplémentaires seront nécessaires pour voir Dépend de l'installation et build Les résultats de.

Dockerfile

FROM node:lts                                                                                                           MAINTAINER xmo
RUN mkdir -p /app
ENV HOST 0.0.0.0
COPY . /app
WORKDIR /app
EXPOSE 3000
RUN (yarn config set registry https://registry.npm.taobao.org) && (yarn config set sass-binary-site https://npm.taobao.org/mirrors/node-sass) && (yarn --production) && (yarn build)
Copier le Code

docker-compose.yml

port À gauche. host Le port de, A droite se trouve le port du conteneur

version: "3"                                                                                                           services:
release:
  container_name: nuxt
  build:
    context: ./
    dockerfile: ./Dockerfile
  command: bash -c "yarn start"
  ports:
    - "3000:3000"
Copier le Code

Commande de démarrage

Ici, j'ai fait un ordre deploy.sh Pour mettre en œuvre, Donc la commande de démarrage est bash deploy.sh ,Le contenu du document est le suivant::

source /etc/profile                                                                                                         #
echo '~-----~ docker-compose rm -f ~-----~' && docker-compose rm -f
echo '~-----~ docker-compose pull ~-----~' && docker-compose pull
# Si votrenpm Le paquet a été modifié sans déclencher , Vous pouvez essayer d'ajouter --no-cacheSuffixe, Est changé en docker-compose build --no-cache
echo '~-----~ docker-compose build ~-----~' && docker-compose build
echo '~-----~ docker-compose up -d~-----~' && docker-compose up -d
echo '~-----~ remove <none> ~-----~' && docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`
echo '~-~ docker ps && docker image ls ~-~' && docker ps && docker image ls
Copier le Code

Vite Développement Dev

Adoption volumes Pour que le projet partage le volume , C'est l'équivalent de nodejs Au lieu de nodejs

Le développement de cette façon ne devrait pas être utilisé Démarrage du démon De la façon dont.

Dockerfile

FROM node:lts-alpine                                                                                                     MAINTAINER xmo
RUN mkdir -p /app
ENV HOST 0.0.0.0
WORKDIR /app
EXPOSE 3000
RUN (yarn config set registry https://registry.npm.taobao.org) && (yarn config set sass-binary-site https://npm.taobao.org/mirrors/node-sass)
Copier le Code

docker-compose.yml

version: '3'
​
services:
web:
  container_name: vite
  build:
    context: ./
  ports:
    - "3000:3000"
  volumes:
    - ./:/app
  command: bash -c "yarn && yarn dev --host"
Copier le Code

En raison de l'environnement de développement , Le port dans le conteneur doit passer par --host Pour être exposé à l'utilisation

Commande de démarrage

docker-compose up
Copier le Code

Vite Déploiement Build

Dockerfile Et Commande de démarrage Ibid.

docker-compose.yml

version: '3'
​
services:
web:
  container_name: node-demo
  build:
    context: ./
  ports:
    - "3000:3000"
  volumes:
    - ./:/app
  command: bash -c "yarn && yarn build"
Copier le Code

Si oui vite Les fichiers emballés apparaîtront dans dist Dans le dossier.

Help

L'environnement de développement n'est pas vraiment recommandé docker Conteneur pour,En particulier vite L'avenir va s'améliorer fs La rigueur de , L'exposition au port qui en résulte nécessite une configuration supplémentaire .

Mais cette méthode vous permet d'installer docker Développement rapide sur la machine .

  • Ce tutoriel utilise yarn Comme outil de gestion de paquets par défaut , Vous pouvez le remplacer par npm .
  • Vous pouvez aussi démarrer un nginx Container to proxy dist Sac, Réaliser un déploiement à guichet unique .
FROM node:lts-alpine                                                                                                     MAINTAINER xmo
RUN mkdir -p /app
ENV HOST 0.0.0.0
WORKDIR /app
EXPOSE 3000
RUN (yarn config set registry https://registry.npm.taobao.org) && (yarn config set sass-binary-site https://npm.taobao.org/mirrors/node-sass) && (yarn) && (yarn build)
​
FROM nginx
RUN mkdir /app
COPY --from=0 /build/dist /app
COPY --from=0 /build/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
Copier le Code

Pour ce faire, vous devez le faire dans le répertoire correspondant nginx Configuration de.

  • N'oublie pas d'écrire. .dockerignore Sinon, un tas de choses inutiles serait copié dans docker .
# Created by .ignore support plugin (hsz.mobi)
​
### Node template
​
# Logs
​
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
package-lock.json
.vscode
​
# Runtime data
​
pids
*.pid
*.seed
*.pid.lock
​
# Directory for instrumented libs generated by jscoverage/JSCover
​
lib-cov
​
# Coverage directory used by tools like istanbul
​
coverage
​
# nyc test coverage
​
.nyc_output
​
# Grunt intermediate storage (<http://gruntjs.com/creating-plugins#storing-task-files>)
​
.grunt
​
# Bower dependency directory (<https://bower.io/>)
​
bower_components
​
# node-waf configuration
​
.lock-wscript
​
# Compiled binary addons (<https://nodejs.org/api/addons.html>)
​
build/Release
​
# Dependency directories
​
node_modules/
jspm_packages/
​
# TypeScript v1 declaration files
​
typings/
​
# Optional npm cache directory
​
.npm
​
# Optional eslint cache
​
.eslintcache
​
# Optional REPL history
​
.node_repl_history
​
# Output of 'npm pack'
​
*.tgz
​
# Yarn Integrity file
​
.yarn-integrity
​
# dotenv environment variables file
​
.env
​
# parcel-bundler cache (<https://parceljs.org/>)
​
.cache
​
# next.js build output
​
.next
​
# nuxt.js build output
​
.nuxt
​
# Nuxt generate
​
dist
​
# vuepress build output
​
.vuepress/dist
​
# Serverless directories
​
.serverless
​
# IDE / Editor
​
.idea
​
# Service worker
​
sw.*
​
# macOS
​
.DS_Store
​
# Vim swap files
​
*.swp
Copier le Code
版权声明
本文为[Xmo]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210914164425988C.html

  1. Design pattern -- agent pattern
  2. Huawei Java Senior Engineer interview question, Byte Jumping thousand Selected Interview Question is still not Brushed!
  3. 双非本科字节跳动Java面试题分享,一篇文章教你搞定计算机网络面试,
  4. 又到一年金三银四,2021最新Java笔试题及答案,
  5. Huawei Finance and Economics 2021 Spring Recruitment interview, what is distributed Lock?Pourquoi utiliser des serrures distribuées?
  6. Un an plus tard, Golden, Silver, Silver, and Silver, 2021, the latest Java written Examination Questions and Answers,
  7. Partage de questions d'entrevue Java à double saut d'octets non - premier cycle, un article vous apprend à gérer l'entrevue réseau informatique,
  8. Computer graduation project java online voting system based on SSM
  9. K8s gestion des ressources (opérations de base)
  10. 又到一年金三銀四,2021最新Java筆試題及答案,
  11. Collection de code de base JavaScript (1)
  12. Vérification des permissions d'interface pour le démarrage du printemps à l'aide d'annotations personnalisées AOP +.
  13. Vérification des permissions d'interface pour le démarrage du printemps à l'aide d'annotations personnalisées AOP +.
  14. Cloud Security Daily 210914: Red Hat Jboss Middleware Platform found important Security Vulnerability and needs to be upgraded as soon as possible
  15. 吐血整理,腾讯团队实力打造spring入门教程,
  16. 史上最全的微服务专业术语面试50问,字节跳动Java岗经典面试真题,
  17. Absolument!C'est l'analyse la plus détaillée du code source de hashtap que j'ai jamais vu!
  18. Computer graduation project Java logistics order management system of logistics company based on SSM
  19. Talk about Kafka: source code analysis of producer
  20. [springboot2 starts from 0] development tips - Lombok, devtools, spring initailizr
  21. 国内一线互联网公司面试题汇总,2021年大厂Java岗面试必问,
  22. 啃完吃透保你涨薪5K,熬夜整理小米Java面试题,
  23. 和字节跳动大佬的技术面谈,Redis成神之路电子版教程已问世,
  24. Le terme professionnel le plus complet de l'histoire des micro - services interview 50 questions, Byte Jumping Java post Classic interview vrai problème,
  25. After using mybatisplus, I haven't written SQL for a long time
  26. [springboot2 starts from 0] how to write a springboot application?
  27. Huawei cloud guassdb (for redis) released a new version, and the two core features were officially unveiled
  28. 和字節跳動大佬的技術面談,Redis成神之路電子版教程已問世,
  29. 啃完吃透保你漲薪5K,熬夜整理小米Java面試題,
  30. Avec l'interview technique du gigolo, le tutoriel électronique redis est sorti.
  31. Après avoir mangé, assurez - vous d'augmenter votre salaire de 5K et de rester debout tard pour trier les questions d'entrevue Java de millet.
  32. Résumé des questions d'entrevue pour les entreprises Internet nationales de première ligne, qui doivent être posées lors de l'entrevue d'emploi Java de la grande usine en 2021,
  33. Le tri des crachats de sang, la force de l'équipe Tencent pour créer le tutoriel d'introduction au printemps,
  34. Java and scala concurrency Fundamentals
  35. Analysis of java thread source code based on Hotspot
  36. 國內一線互聯網公司面試題匯總,2021年大廠Java崗面試必問,
  37. Introduction au module de contrôle de Connexion MySQL
  38. 大厂高级测试面试题,Java面试基础技能罗列,
  39. Comprendre l'architecture sous - jacente d'InnoDB en exécutant une instruction
  40. Chargeur de classe 1 Tomcat
  41. 小白也能看懂的dubbo3应用级服务发现详解
  42. SpringBoot异步使用@Async原理及线程池配置
  43. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  44. SpringBoot异步使用@Async原理及線程池配置
  45. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  46. Détails de la découverte du Service d'application Dubbo 3 que Xiaobai peut également comprendre
  47. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  48. 如何强大且优雅的搞定Linux文件系统,算法题 JVM,
  49. 太牛了,阿里P7架构师带你看透maven的来龙去脉,
  50. Oracle central et Oracle décentralisé
  51. java JavaBean
  52. Java wrapper type
  53. Java super keyword
  54. Java static keyword
  55. Java this keyword
  56. Java interface
  57. 太牛了,阿裏P7架構師帶你看透maven的來龍去脈,
  58. C'est génial, l'architecte Ali p7 vous montre à travers Maven.
  59. Comment traiter le système de fichiers Linux avec puissance et élégance, algorithme JVM,
  60. Usage of Java scanner