Признайтесь, я очень новичок в Docker и только что узнал, начиная с предыдущей недели (24 ноября) в Katacoda, Pluralsight и Lynda. По прошествии недели я обнаружил, что Docker действительно полезен для развертывания наших проектов в рабочей среде как для разработчиков, так и для системных операторов.
Как я узнал из этих веб-сайтов, создание док-образа NodeJS API довольно просто и легко. Это можно сделать только с 1 этапом для создания образа Docker следующим образом:
FROM node:latest ENV NODE_ENV=production ENV PORT=3000 COPY . /var/www WORKDIR /var/www/ VOLUME ["/var/www", "/logs"] RUN npm install EXPOSE $PORT ENTRYPOINT ["npm", "start"]
Но проблема в том, что когда я пытаюсь создать проект AngularJS для образа Docker, это будет довольно сложно для новичка. Потому что, как и внутри AngularJS для производственного развертывания, мне нужно сначала установить все node_modules, затем установить компоненты Bower и минимизировать их. В этом случае мне нужно создать команду Docker для этапа за этапом.
- Сначала соберите AngularJS, установив модули узлов, компоненты Bower и минимизировав все файлы html, css и javascript.
- скопируйте эту папку рабочей стадии в папку веб-сервера Nginx.
И структура папок моего проекта выглядит следующим образом:
+-- app | +-- bower.json | +-- index.html | +-- index.js | +-- index.css +-- gulpfile.js +-- package.json
Прежде чем использовать Docker для производственного кода, мне нужно выполнить следующий шаг, чтобы создать производственную папку со сценарием bash.
npm install && npm install bower -g && npm install gulp -g cd app && bower install --allow-root cd ../ && gulp default
Чтобы преобразовать эти скрипты в Dockerfile, мне нужно написать
### STAGE 1: Build ### FROM node:7.0.0 as angularapp ENV NODE_ENV=production ENV PORT=3000 LABEL auther="PPShein" COPY package.json package.json COPY . /var/www WORKDIR /var/www RUN npm install && npm install bower -g && npm install gulp -g RUN cd /var/www/app && bower install --allow-root RUN cd /var/www/ && gulp default ### STAGE 2: IMAGE ### FROM nginx:alphine VOLUME [ "/var/cache/nginx" ] COPY nginx/default.conf /etc/nginx/conf.d/ COPY --from=angularapp /var/www/dist /usr/share/nginx/html