Использование одного образа докера NodeJs внутри React Container - PullRequest
0 голосов
/ 24 апреля 2019

Шаг 1: Я создал локальный образ докера одного приложения NodeJS.Вот файл Docker для этого приложения -

FROM node:8

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

#EXPOSE 8080
CMD [ "npm", "start" ]

** Шаг 2: ** Затем я создал образ Docker для этого приложения Node.Вот вывод команды build -

C:\Users\shibathethinker\Documents\GitHub\NodeProjects\API_Proxy_ABN>docker build -t api-proxy .
Sending build context to Docker daemon  8.637MB
Step 1/6 : FROM node:8
 ---> 0bf36d7ccc1e
Step 2/6 : WORKDIR /usr/src/app
 ---> Running in 7187d65639f1
Removing intermediate container 7187d65639f1
 ---> 0e34dc93439c
Step 3/6 : COPY package*.json ./
 ---> 47c0d0ca8c77
Step 4/6 : RUN npm install
 ---> Running in d7e5163371df
npm WARN api_proxy@1.0.0 No repository field.

added 98 packages from 91 contributors and audited 194 packages in 8.598s
found 0 vulnerabilities

Removing intermediate container d7e5163371df
 ---> 72da705ae792
Step 5/6 : COPY . .
 ---> 0293df6aa27d
Step 6/6 : CMD [ "npm", "start" ]
 ---> Running in 251e98c0a0ae
Removing intermediate container 251e98c0a0ae
 ---> a92d8a95b8cd
Successfully built a92d8a95b8cd
Successfully tagged api-proxy:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

** Шаг 3: ** Затем я хотел использовать этот образ докера в другом приложении «React».Вот Dockerfile приложения -

 FROM   api-proxy:latest
WORKDIR /app
RUN npm install
CMD [ "npm", "start" ]

# stage: 2 — the production environment
FROM nginx:alpine
#COPY —from=react-build /app/build /usr/share/nginx/html
#COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY /build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Step4: Теперь я построил и запустил образ Docker, созданный на шаге 3.

Вопрос:

Похоже, что приложение узла не запущено во вновь созданном контейнере Docker.Если я вставлю ssh в контейнер докера, я не смогу увидеть работающий там сервер узлов.Я также не смог найти WORKDIR (/ usr / src / app), созданный в шаге 1, в этом контейнере.

Что я делаю не так?Пожалуйста, дайте мне знать, если я смогу уточнить.

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Сервер Nodejs может быть в своем собственном независимом контейнере, что, я думаю, вы уже сделали. Клиент фактически будет веб-сервером, например, для nginx, apache и т. д., которые будут служить основой для вашего приложения реакции. В итоге у вас будет запущено 2 контейнера: 1 для сервера nodejs и 1 для веб-сервера nginx.

Чтобы поместить сборку вашего приложения в этот веб-сервер nginx, вы будете использовать многоэтапную сборку. На первом этапе вы создадите свое приложение реагирования, а на втором этапе вы будете использовать образ nginx и скопируете сборку реакции с первого этапа в папку html образа nginx.

1 голос
/ 24 апреля 2019

Вы выполняете многоэтапную сборку докера. Вы создаете свое приложение с помощью nodejs (загрузка зависимостей и сборка минимизации), копируете и запускаете его на веб-сервере nginx.

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