Essayer de créer une application angulaire dans docker et de l'exécuter en tant que conteneur dans mon local en utilisant Node js.
J'ai utilisé l'image de construction en utilisant ci-dessous Dockerfile, mais je ne suis pas sûr de ce qui me manque lors de l'exécution. Quelqu'un peut-il me signaler?
Dockerfile:
docker run -p 4201:4200 example
Image créée avec la commande ci-dessous avec succès
docker build -t example .
J'essaie d'exécuter l'image en utilisant la commande ci-dessous, mais cela n'aide pas
FROM node:10.15.3 ENV HOME=/home WORKDIR $HOME RUN npm config set strict-ssl false \ && npm config set proxy http://proxy.xxxxxx.com:8080 COPY package.json . RUN npm install
4 Réponses :
votre Dockerfile n'exécute / ne sert pas votre application, pour ce faire, vous devez:
FROM node:10.15.3 RUN npm config set strict-ssl false \ && npm config set proxy http://proxy.xxxxxx.com:8080 # get the app WORKDIR /src COPY . . # install packages RUN npm ci RUN npm install -g @angular/cli # start app CMD ng serve --host 0.0.0.0
j'espère que cela vous aidera.
JFYI, ce n'est pas une bonne pratique d'exécuter une application angulaire sur l'environnement de production en utilisant ng serve
.
Pour les débutants de Docker complet, cet article peut être utile pour comprendre si vous souhaitez exécuter Angular dans Docker thecodeframework.com/...
Le conteneur a besoin d'un processus de premier plan en cours d'exécution, alors il ne se fermera pas. Sinon, le conteneur se fermera directement.
Pour votre cas, vous devez COPIER
votre projet nodejs dans le conteneur lorsque docker build
, et également démarrer le projet dans CMD
comme < code> CMD ["npm", "start"] . Comme le serveur Web ne se ferme pas, votre conteneur ne se fermera pas.
Un bon article ici pour savoir comment ancrer une application Web Node.js.
L'article était très bon pour connaître un point de base sur chaque étape.
Il vous suffit de mettre à jour votre Dockerfile pour atteindre votre objectif pour plus d'options, voir ici a >: # base image
FROM node:12.2.0
RUN npm config set strict-ssl false \
&& npm config set proxy http://proxy.xxxxxx.com:8080
# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update && apt-get install -yq google-chrome-stable
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install -g @angular/cli@7.3.9
# add app
COPY . /app
# start app
CMD ng serve --host 0.0.0.0
Essayez également le Dockerfile suivant!
FROM node:alpine # get the app WORKDIR /src # install packages RUN npm ci RUN npm install -g @angular/cli COPY package.json . RUN npm install COPY . . # start app CMD ["ng", "serve", "-o"]
Qu'essayez-vous de réaliser? votre image de construction installera simplement les dépendances pour votre application angulaire.
Je ne vois pas le conteneur docker en cours d'exécution après l'exécution de la commande docker run comme ci-dessus. J'ai vérifié à l'aide de docker ps.
Si j'étais vous, j'ajouterais des détails pour savoir s'il s'agit d'un cas d'utilisation de production ou de développement. Vous pourriez obtenir une réponse différente en fonction de cela. Fondamentalement, le cli
ng
n'est pas adapté pour servir des applications en production. Vous devez utiliser un serveur approprié comme nginx ou quelque chose de similaire.