首页 > 解决方案 > Docker Compose:标志值生成器无效:

问题描述

您好,我正在尝试制作 dockercompose,但出现以下错误:

从标志值构建器无效:构建器的拉取访问被拒绝,存储库不存在或可能需要“docker登录”:拒绝:请求的资源访问被拒绝

我无法想象我可能会在哪里失踪

我的码头工人撰写文件:

version: "3.7"
services:
  db:
    image: postgres:12
    restart: always
    container_name: "db"
    ports:
      - "${DB_PORT}:5432"
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASS}
      POSTGRES_DB: ${DB_NAME}

  pgadmin:
    image: dpage/pgadmin4
    restart: always
    container_name: "pgadmin4"
    depends_on:
      - db
    ports:
      - 5050:80
    environment:
      PGADMIN_DEFAULT_EMAIL: emasa@emasa.com
      PGADMIN_DEFAULT_PASSWORD: admin

  api:
    image: server_emasa
    container_name: api
    restart: always
    depends_on:
      - db
    ports:
      - "${SERVER_PORT}:${SERVER_PORT}"
volumes:
  db_data:

我的 Docker 文件:

 FROM node as builder
WORKDIR usr/app
COPY package*.json ./
COPY --from=builder /usr/app/dist ./dist
COPY ormconfig.docker.json ./ormconfig.json
COPY .env . 
RUN yarn install
RUN yarn run build
COPY back-end/ ./
EXPOSE 4000

和我的环境文件:

SERVER_PORT = 4000
DB_HOST = 0.0.0.0
DB_PORT = 5432
DB_USER = spirit
DB_PASS = emasa
DB_NAME = emasa_base

我的 json orm 配置:

{
  "type": "postgres",
  "host": "${DB_HOST}",
  "port": "${DB_PORT}",
  "username": "${DB_USER}",
  "password": "${DB_PASS}",
  "database": "${DB_NAME}",
  "synchronize": true,
  "logging": false,
  "entities": ["src/entity/**/*.ts"],
  "migrations": ["src/migration/**/*.ts"],
  "subscribers": ["src/subscriber/**/*.ts"],
  "cli": {
    "entitiesDir": "src/entity",
    "migrationsDir": "src/migration",
    "subscribersDir": "src/subscriber"
  }
}

我的文件夹结构:

在此处输入图像描述

标签: docker

解决方案


使用时,COPY您可以使用--from参考一些先前的构建阶段或一些外部图像。由于builder您当前的构建阶段是 Docker 认为您--from=builder指的是一些外部图像,因此会给您该错误。再次检查您的 Dockerfile 是否正确。


让我们从基础开始。尝试:

FROM node as builder
WORKDIR usr/app
COPY . .
RUN yarn install
RUN yarn run build
EXPOSE 4000

推荐阅读