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://qdmana.com/2021/09/20210914164425988C.html

  1. 350 questions d'entrevue Android partage, technologie d'architecture de cache
  2. The space is not vulgar, the configuration is rich, the leather is durable, less worry, and the high configuration is less than 100000!
  3. Vous permet de passer rapidement à travers l'entrevue de saut d'octets et d'aller de l'avant
  4. Résumé des questions d'entrevue technique d'Alibaba Baidu et d'autres grandes usines à la fin de l'année, et analyse de la dernière vraie question d'entrevue Android en 2021
  5. Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,
  6. Avec cet ensemble de questions d'entrevue Java, les notes avancées Java de niveau divin sont systématisées,
  7. Opérateurs arithmétiques et opérateurs de comparaison pour JavaScript, Introduction classique au développement web
  8. Explorer le cadre open source Android - 1. Okhttp Source Analysis
  9. Module management of "free and open source" front-end spa project crudapi background management system based on Vue and Quasar (14)
  10. Partager l'expérience de l'examen et du développement de l'arrière - plan, en s'appuyant sur les questions d'entrevue et les réponses,
  11. Site Web pour partager vos expériences d'entrevue, Tencent Bull vous apprend à écrire votre propre cadre Java!
  12. Notes d'étape Android structurées, sélection de vrais problèmes d'entrevue Android
  13. Dictionnaire distribué: communication de cache limitée par le courant, sujets d'entrevue pour certaines questions courantes dans le développement Java,
  14. Tianci girlfriend Tangyuan attended the event for the second time. Her appearance was comparable to that of a star. The audience shouted that Tianci was blessed!
  15. Introduction au JavaScript chapitre 15 (objets, clairvoyance)
  16. La dernière revue scientifique de l'académicien Luo Liqun: architecture de la boucle neuronale pour stimuler la nouvelle Ia
  17. Basic knowledge of components in Vue "I"
  18. J'a i appris quelques petites choses sur l'entrevue et j'ai acheté un tutoriel en 19998.
  19. Dix minutes pour vous faire passer en revue les points de connaissance que Spring demande souvent, le chemin du retour Jedi d'un programmeur âgé de 35 ans,
  20. Want to know the implementation and application of single instance mode in the front end?
  21. Progressive react source code analysis - Implementation of ref API
  22. Webpack5 learning -- code compression
  23. Front and back end data interaction (V) -- what is Axios?
  24. Knowledge points related to react routing
  25. On demand introduction of react antd + customized theme
  26. GPG management submission signature verification
  27. [babylonjs] babylonjs practice (XII) -- drawing lane lines
  28. After brushing the 12 sliding windows, you can tear the front end by hand
  29. Vue fruit bookkeeping - money.vue component
  30. Propriétés et méthodes des objets Array en javascript!,Pseudo - classes et pseudo - éléments pour CSS
  31. JS contains the function code
  32. Typescript record (I)
  33. Take you to learn more about nginx basic login authentication: generating passwords using OpenSSL
  34. Is componentization obsolete? Introduction to micro front end architecture
  35. Leetcode day 18
  36. Simple code to achieve a, 1W + people see the Mid Autumn Festival blessing
  37. Design pattern -- agent pattern
  38. Vs Code theme recommendation in 2021
  39. Mon expérience réelle dans l'externalisation Android à Huawei, préparation de l'entrevue de développement Android
  40. J'ai les questions et les réponses d'entrevue de développement d'octets de rêve et Tencent double offer, Android
  41. Fatal Magic: countless sacrifices under gorgeous magic
  42. Mon expérience d'entrevue principale est partagée avec l'expérience d'apprentissage
  43. Mon expérience d'entrevue Android de Tencent partage, plugin Android
  44. Partage de questions d'entrevue Java à double saut d'octets non - premier cycle, un article vous apprend à gérer l'entrevue réseau informatique,
  45. Questions d'entrevue CSS (notes)
  46. Syntaxe de base de la classe
  47. Héritage de classe
  48. Mise en œuvre simple de 30 minutes pour un filtrage rapide des chaînes de tableau 10W +.
  49. Vue 3 tri des documents démarrage rapide
  50. Collection de code de base JavaScript (1)
  51. National secret nginx Container actual Fighting
  52. Quelques lignes de css pour rendre votre page tridimensionnelle
  53. C'est super détaillé, de "finir" ce 300 pages de 1000 questions d'entrevue,
  54. Take you in-depth understanding of nginx basic login authentication (including all configuration steps and in-depth analysis)
  55. 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.
  56. 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,
  57. "L'amour à première vue", la nouvelle BMW 2 coupe réelle, vous êtes surpris?
  58. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  59. Tableau 2D trié par un champ
  60. JS est souvent utilisé pour déterminer si l'objet est vide