Как вставить образы докера в реестр и вытащить их только с помощью файла docker-compose.yml - PullRequest
0 голосов
/ 07 января 2019

Я новичок в Docker, и у меня есть некоторые проблемы с процессом загрузки изображений в личный реестр и извлечения их с помощью файла docker-compose.yml на другом компьютере в нашем офисе.

В моем проекте 2 папки: nginx и клиент.
Nginx - это сервер, а клиент - приложение create-реагировать.

папка nginx:

default.conf:

upstream client {
  server client:3000;
}

server {
  listen 80;

  location / {
    proxy_pass http://client;
  }

  location /sockjs-node {
    proxy_pass http://client;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
  }
}


Dockerfile:

FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.confd


папка клиента:

nginx / default.conf:

server {
  listen 3000;

  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
  }
}


Dockerfile:

FROM node:alpine as builder

ARG REACT_APP_NODE_ENV
ENV REACT_APP_NODE_ENV $REACT_APP_NODE_ENV

WORKDIR /app
COPY ./package.json ./
RUN npm i
COPY . .
RUN npm run build

FROM nginx
EXPOSE 3000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build /usr/share/nginx/html



За пределами этих двух папок у меня есть файл docker-compose.yml:

version: '3'
services:
  nginx:
    restart: always
    build:
      dockerfile: Dockerfile
      context: ./nginx
    ports:
      - '3050:80'
  client:
    build:
      context: ./client
      dockerfile: Dockerfile
      args:
        - REACT_APP_NODE_ENV=production
    volumes:
      - /app/node_modules
      - ./client:/app



Когда я делаю внутри папки проекта «docker-compose up --build», все работает, как я ожидаю.

Теперь я хочу нажать на изображения и перенести их на другой компьютер в офисе.
Сначала я поместил 2 изображения (nginx и клиент) в реестр с помощью следующих команд на терминале:

docker build -t orassayag/osr_streamer_nginx:v1.0 .

docker tag orassayag/osr_streamer_nginx:v1.0 <office_ip_address>:5000/orassayag/osr_streamer_nginx:v1.0

docker push <office_ip_address>:5000/orassayag/osr_streamer_nginx:v1.0

docker build -t orassayag/osr_streamer_client:v1.0 .

docker tag orassayag/osr_streamer_client:v1.0 <office_ip_address>:5000/orassayag/osr_streamer_client:v1.0

docker push <office_ip_address>:5000/orassayag/osr_streamer_client:v1.0



Затем я обновил свой файл docker-compose.yml следующим образом:

version: '3'
services:
  nginx:
    image: <office_ip_address>:5000/orassayag/osr_streamer_nginx
    restart: always
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - '3050:80'
  client:
    image: <office_ip_address>:5000/orassayag/osr_streamer_client
    build:
      context: ./client
      dockerfile: Dockerfile
      args:
        - REACT_APP_NODE_ENV=production
    volumes:
      - /app/node_modules
      - ./client:/app



Я пошел на другой компьютер, создал папку с именем «TestDeploy», и на терминале я запускаю «docker-compose build --pull», и я получаю следующую ошибку:

"ОШИБКА: путь сборки C: \ Or \ Web \ StreamImages \ TestDeploy \ nginx либо не существует, либо недоступен, либо не является допустимым URL-адресом."

Что я делаю не так?
Мне нужна помощь.

1 Ответ

0 голосов
/ 07 января 2019

Вам необходимо удалить блоки build: в вашей среде развертывания, иначе Docker Compose попытается построить образы, а не вытягивать их. Вам также нужно удалить volumes: там, иначе он будет ожидать найти исходный код локально, а не в изображении.

(Моя личная рекомендация - удалять volumes: везде , заниматься разработкой вне Docker, и ваши настройки Docker точно отражают вашу среду развертывания, но я, кажется, в этом меньшинство .)

...