Невозможно запустить контейнер docker через ebcli на локальном компьютере. - PullRequest
0 голосов
/ 22 апреля 2020

Кажется, есть некоторая проблема с тем, как ebcli испускает команду запуска docker.

Ниже приведена команда, которую я запускаю на компьютере MacOS

eb local run --port 3001

Хотя eb может успешно создать образ docker, он выдает ошибку ниже при попытке запустить то же самое.

docker: invalid publish opts format (should be name=value but got '3001:${PORT}').

Вот как выглядит мой Dockerfile

# Check out https://hub.docker.com/_/node to select a new base image
FROM node:10-slim

# Set to a non-root built-in user `node`
USER node

# Create app directory (with user `node`)
RUN mkdir -p /home/node/app

WORKDIR /home/node/app

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

RUN npm install

# Bundle app source code
COPY --chown=node . .

RUN npm run build

# Bind to all network interfaces so that it can be mapped to the host OS
ENV HOST=0.0.0.0 PORT=3000

EXPOSE ${PORT}

CMD [ "node", "." ]

1 Ответ

0 голосов
/ 28 апреля 2020

Это ограничение ebcli. Причина, по которой это происходит, заключается в том, что ebcli анализирует ваш файл dockerfile для получения незащищенного порта. Поскольку ebcli считывает вашу инструкцию EXPOSE в виде буквенной строки, когда вы ссылаетесь на переменную среды в вашей инструкции EXPOSE, ebcli пытается передать эту строку параметру порта как -p 3001:${PORT}.

. Чтобы решить эту проблему, вам потребуется измените вашу инструкцию EXPOSE, чтобы явно выставить значение 3000.

пример:

EXPOSE 3000

Существуют улучшения, которые могут быть сделаны для улучшения этого опыта. Не стесняйтесь сообщать об этом в ebcli github хранилище .

...