Развернуть образ докера в GAE для угловых - PullRequest
0 голосов
/ 26 сентября 2018

Я пытался создать докер-контейнер с nginx как сервер, который прекрасно работает локально, но по какой-то причине я не могу развернуть его на движке приложений Google.Не могли бы вы дать мне знать, если это вообще возможно?Если это возможно, не могли бы вы также направить меня.У меня также есть образ в репозитории GCP, но я не смог найти способ развернуть его в GAE

Вот мой докер

  #STEP1
  # we name it as builder so as to use in the following instructions 
  further
 FROM node:8.12.0-alpine as builder

 #Now install angular cli globally
 RUN npm install -g @angular/cli@6.2.1
  #Install git and openssh because alpine image doenst have git and all 
  modules in npm has the dependicies which are all uploaded in git
  #so to use them we need to be able git
 RUN apk add --update git openssh

  #create a new direcotry for the prj and change its directory to it
 RUN mkdir ./adtech-prj

  #copy the package json #dont copy package.lock json now
 COPY package.json package-lock.json ./adtech-prj/

  #this is required to place all our files inside this directory
 WORKDIR ./adtech-prj

 #this copies all files to the working directory
  COPY . .
  # --RUN pwd && ls

  RUN npm cache clear --force && npm i


  RUN $(npm bin)/ng build --prod --aot

  ### STAGE 2: Setup ###

  FROM nginx:1.15-alpine
  RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
  ## Copy our default nginx config
  COPY nginx.conf /etc/nginx/conf.d/

  ## Remove default nginx website
  RUN rm -rf /usr/share/nginx/html/*

  RUN pwd && ls 

  COPY --from=builder /adtech-prj/dist /usr/share/nginx/html



   EXPOSE 80

   CMD ["nginx", "-g", "daemon off;"]

А вот моя конфигурация nginx- простой

 server {


      listen 80 default_server;

      #server_name *.adtechportal.com;
      sendfile on;

      default_type application/octet-stream;



      root /usr/share/nginx/html;


      location / {
        try_files $uri $uri/ /index.html =404;
        #proxy_pass: "http://localhost:8080/AdTechUIContent"
        #uncomment to include naxsi rules
        #include /etc/nginx/naxsi.rules
       }

    }

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Благодаря Гильермо.Я нашел ответ на это.Причина, по которой я не смог успешно развернуть предыдущие образы док-станции, заключается в том, что я пытался предоставить порт, который не является 8080

. По умолчанию механизм приложений прослушивает порт 8080 и ожидает, что файл конфигурации nginxиспользовать тот же «прослушивающий» порт для этого. Кроме того, по умолчанию ядро ​​приложения предоставляет SSL, поэтому нет необходимости использовать nginx с SSL.

Вот измененные версии nginx.conf

events {
   worker_connections 768;
}

http {
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 65;
 types_hash_max_size 2048;
 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 # Logs will appear on the Google Developer's Console when logged to this
 # directory.
 access_log /var/log/app_engine/app.log;
 error_log /var/log/app_engine/app.log;

 root /usr/share/nginx/html;

  server {
     # Google App Engine expects the runtime to serve HTTP traffic from
     # port 8080.
     listen 8080;

   }

  location / {
    try_files $uri $uri/ /index.html =404;
  }

}

Вот новый файл Docker

FROM node:8.12.0-alpine as builder

#Now install angular cli globally
RUN npm install -g @angular/cli

RUN apk add --update git openssh

#create a new direcotry for the prj and change its directory to it
RUN mkdir ./test

#copy the package json #dont copy package.lock json now
COPY package.json package-lock.json ./adtech-prj/

#this is required to place all our files inside this directory
WORKDIR ./test

#this copies all files to the working directory
COPY . .

RUN ng set -g warnings.versionMismatch=false
RUN npm cache clear --force && npm i


#Build the angular app in production mode and store the artifacts in dist 
folder
RUN $(npm bin)/ng build --prod

### STAGE 2: Setup ###

FROM nginx:1.15-alpine
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*

COPY nginx.conf /etc/nginx/conf.d/


# create log dir configured in nginx.conf
RUN mkdir -p /var/log/app_engine

RUN mkdir -p /usr/share/nginx/_ah && \
echo "healthy" > /usr/share/nginx/_ah/health

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*


COPY --from=builder /adtech-prj/dist /usr/share/nginx/html


RUN chmod -R a+r /usr/share/nginx/html
0 голосов
/ 26 сентября 2018

Определенно возможно выполнить развертывание в Google App Engine с сервером Dockerfile и nginx в Google Cloud Platform. Для этой цели были реализованы пользовательские среды выполнения .

Чтобы создать пользовательскую среду выполнения, вы создаете Dockerfile с выбранным базовым образом, а затем добавляете команды docker, которыесоздайте желаемую среду выполнения.

Протестируйте ее, следуя настраиваемым средам выполнения в быстром запуске GAE Flex .Он использует Dockerfile для определения среды, а также запускает веб-сервер nginx для App Engine.Посмотрев, как работает пример быстрого запуска, замените файлы Dockerfile и nginx.conf вашими.Возможно, вам придется немного их настроить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...