如何将docker图像推送到注册表中,并仅通过docker-compose.yml文件拉取它们

如何将docker图像推送到注册表中,并仅通过docker-compose.yml文件拉取它们,docker,nginx,docker-compose,create-react-app,Docker,Nginx,Docker Compose,Create React App,我是docker的新手,在将图像推送到私人注册表并通过docker-compose.yml文件在办公室的另一台计算机中提取图像的过程中遇到了一些问题。 我的项目中有两个文件夹:nginx和client。 nginx是服务器,客户端是create-react-app。 nginx文件夹: default.conf: upstream client { server client:3000; } server { listen 80; location / { proxy_p

我是docker的新手,在将图像推送到私人注册表并通过docker-compose.yml文件在办公室的另一台计算机中提取图像的过程中遇到了一些问题。

我的项目中有两个文件夹:nginx和client。
nginx是服务器,客户端是create-react-app。

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
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.yml文件:

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
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”中执行此操作时,一切都按我的预期进行。

现在,我想把图像推送到办公室的另一台电脑上。
我首先通过终端上的以下命令将两个映像(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 build-t orassayag/osr_streamer_nginx:v1.0。
docker标签Orassayg/osr_拖缆:v1.0:5000/Orassayg/osr_拖缆:v1.0
docker push:5000/Orassayg/osr_拖缆:v1.0
docker构建-t Orassayg/osr_拖缆客户端:v1.0。
docker标签Orassayg/osr_拖缆_客户端:v1.0:5000/Orassayg/osr_拖缆_客户端:v1.0
docker推送:5000/Orassayg/osr_拖缆_客户端: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
版本:“3”
服务:
nginx:
图像::5000/Orassayg/osr_拖缆
重新启动:始终
建造:
上下文:./nginx
dockerfile:dockerfile
端口:
- '3050:80'
客户:
图像::5000/Orassayg/osr_拖缆_客户端
建造:
上下文:./client
dockerfile:dockerfile
args:
-反应\应用\节点\环境=生产
卷数:
-/app/node\u模块
-/客户端:/app


我转到另一台计算机,创建了一个文件夹名“TestDeploy”,并在终端上运行“docker compose build--pull”,我得到了以下错误:

错误:生成路径C:\Or\Web\StreamImages\TestDeploy\nginx不存在、不可访问或不是有效的URL。“

我做错了什么?

我需要帮助。

您需要删除部署环境中的
构建:
块,否则Docker Compose将尝试构建映像,而不是拉取它们。您还需要删除
卷:
,否则它将期望在本地而不是在映像中找到源代码

(我个人的建议是删除那些
卷:
无处不在,在Docker之外进行开发,并让Docker设置准确反映您的部署环境,但我似乎对此持少数意见。)