J'ai une application AngularJS qui a cette structure:
app/
----- controllers/
---------- mainController.js
---------- otherController.js
----- directives/
---------- mainDirective.js
---------- otherDirective.js
----- services/
---------- userService.js
---------- itemService.js
----- js/
---------- bootstrap.js
---------- jquery.js
----- app.js
views/
----- mainView.html
----- otherView.html
----- index.html
Comment puis-je créer ma propre image à partir de cela et l'exécuter sur un conteneur? J'ai essayé de l'exécuter sans succès avec un Dockerfile et je suis relativement nouveau à Docker, donc excuses si c'est simple. Je veux juste l'exécuter sur un serveur http (en utilisant peut-être nginx?)
J'ai essayé ceux-ci pour de l'aide, sans succès:
Tout d'abord, suivez ceci guide des meilleures pratiques pour construire votre angular. Le fichier index.html doit être placé dans le dossier racine. Je ne sais pas si le les étapes suivantes fonctionneront, si ce n'est pas le cas.
Pour utiliser un nginx, vous pouvez suivre ce petit tutoriel: Dockerized Angular app with nginx
1.Créez un Dockerfile dans le dossier racine de votre application (à côté de votre index.html)
FROM nginx
COPY ./ /usr/share/nginx/html
EXPOSE 80
2.Exécuter docker build -t my-angular-app .
dans le dossier de votre Dockerfile.
3 .docker run -p 80:80 -d my-angular-app
puis vous pouvez accéder à votre application http: // localhost
en s'appuyant sur la réponse de @adebasi, je veux mettre en évidence ce Dockerfile à utiliser avec l'application Angular CLI CLI actuelle).
Il utilise les Dockers ' fonctionnalité de construction en plusieurs étapes introduit en 17.05. À l'étape 1, le conteneur Node est uniquement utilisé pour créer une génération. L'image finale utilisera Nginx et fournira statiquement les fichiers générés.
### STAGE 1: Build ###
# We label our stage as 'builder'
FROM node:8-Alpine as builder
COPY package.json package-lock.json ./
RUN npm set progress=false && npm config set depth 0 && npm cache clean --force
## Storing node modules on a separate layer will prevent
## unnecessary npm installs at each build
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
WORKDIR /ng-app
COPY . .
## Build the angular app in production mode and store the artifacts in dist folder
RUN $(npm bin)/ng build --prod --build-optimizer
### STAGE 2: Setup ###
FROM nginx:1.13.3-Alpine
## Copy our default nginx config
COPY nginx/default.conf /etc/nginx/conf.d/
## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*
## From 'builder' stage copy over the artifacts in dist folder
## to default nginx public folder
COPY --from=builder /ng-app/dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Généralement,
Docker est utilisé pour docker les applications . Maintenant, une application ne se compose pas uniquement de JavaScript (comme AngularJS est un framework JS) à moins que vous ne choisissiez un framework back-end comme Node, ASP.NET Core, Python etc. Donc, si vous avez seulement application HTML simple, utilisez un proxy inversé ou un conteneur de serveur Web comme mentionné par Robbie. Pour un cas simple (exemple Nginx):