Я просто хочу создать док-контейнер, который извлекает из официального образа Node.js, используя рекомендации , найденные здесь .
Единственное изменение, которое я хочу сделать, это то, что я хотел бы смонтировать каталог хоста в свой контейнер, чтобы я мог создавать новые файлы на хосте и обновлять их в контейнере.
Я перепробовал каждое предложение здесь : -v флаг, --mount флаг и т. Д.
Но когда я использую эти флаги с командой run, контейнер фактически не запускается.
Я запускаю следующее:
docker run -p 49160:8080 -d myname/node-web-app --mount source=/Users/myname/desktop/dockyard/enviro
Выплевывает контейнер ID:
7302055670c231fb41d04d6475d42405cbee834e37e0827a68d7c396a918d3ec
Но когда я запускаю docker-ps
список контейнеров становится пустым.
Когда я проверяю docker-ps -a
, я вижу, что он был завершен с кодом 9:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbf7973608a0 myname/node-web-app "docker-entrypoint.s…" 4 seconds ago Exited (9) 2 seconds ago quirky_sammet
Я искал объяснение кода 9 и ничего не могу найти.
Буду очень признателен за любую помощь, которая может быть оказана.
UPDATE
Пробовал:
docker run -p 49160:8080 -d myimage -v /Users/myname/desktop/dockyard/enviro:/usr/src/main
Контейнер выходит с кодом 0. docker logs
просто возвращает v11.15.0
Я понимаю, что это означает, что контейнер выходит из-за отсутствия процесса, НО, если я запускаю docker run -p 49160:8080 -d myimage
без флага -v, контейнер работает отлично.
Так что не уверен, почему флаг -v приведет к выходу (0).
Dockerfile в соответствии с руководством Node.js:
FROM node:11
# Create app directory
WORKDIR /usr/src/main
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]