Я новичок в докере, и я создал файл докеров, но у меня возникли трудности с моим файлом создания докеров. В настоящее время я получаю сообщение об ошибке services.web.ports должно быть списком. У меня есть файл node app.js, который обрабатывает запросы и печатает данные из базы данных, и файл index.js, который выглядит так.
"use strict";
console.info("entrypoint");
const app = require("./app/app.js");
Мой Dockerfile выглядит так:
FROM node:latest
WORKDIR /src
COPY package*.json /src/
RUN npm install
COPY . /src
EXPOSE 3000
А вот как выглядит мой текущий файл docker-compose
version: '3.3'
services:
app:
build:
context: ./
volumes:
- .:/src
ports:
-"3000:3000"
depends_on:
- db
db:
image: mysql
restart: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_DATABASE: world
MYSQL_USER: root
MYSQL_PASSWORD: null
ports:
- "3308:3306"
volumes:
- db:/var/lib/mysql
Я написал это на основе примера, и я знаю, что он ошибочен, и был бы признателен за любое руководство. Если бы я запускал файл app.js один через узел, он работал бы нормально, но я пытаюсь внедрить докер в свой проект и нуждаюсь в помощи.
Когда я пытаюсь запустить docker-compose up --build в своем терминале, он говорит, что services.app.ports должен быть списком, поэтому я предположил, что с файлом компоновки что-то не так.
Сообщение об ошибке в вашем вопросе было о services.web.ports
. Ваш комментарий означает services.app.ports
. В файле компоновки нет службы web
.
Опечатка в вопросе опечатка в файле, большое спасибо
Сервис для приложения имеет опечатку в разделе портов. Список представляет собой записи с отступом, перед которыми стоит -
. В строке здесь отсутствует пробел:
ports:
-"3000:3000"
Исправьте это, добавив пробел:
ports:
- "3000:3000"
Сообщение об ошибке пришло не из файла компоновки, который вы разместили.