编程知识 cdmana.com

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

Scroll to Top