Я новичок в Docker и у меня действительно есть некоторые проблемы.
Моя цель: - использовать Dockerfile, чтобы создать docker-контейнер и оставаться внутри контейнера / не выпадать из него.- запуск локального Docker-контейнера - установка «gulp» с помощью package.json - установка «gulp global» на Docker - копирование любых файлов в мой Docker-контейнер - выполнение «gulp --version» и «gulp task» по умолчанию и сохранениевнутри терминала.
Вот мои настройки:
Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --global gulp-cli
RUN npm install
COPY . .
EXPOSE 3000
CMD ["gulp --version" , "gulp"] or? [gulp --version , gulp]
package.json
{
"name": "docker-test",
"version": "1.0.0",
"description": "Testing Docker",
"main": "index.js",
"scripts": {
"test": "test"
},
"author": "",
"license": "",
"devDependencies": {
"gulp": "^4.0.0"
}
}
gulpfile.js
function defaultTask(cb) {
console.log("Default task for gulp 4.0 for docker")
cb();
}
exports.default = defaultTask
docker-compose.yml (я не думаю, что нам нужно это для моего вопроса, но я все равно опубликую его, так как я не совсем уверен, если это может создать некоторые проблемы)
version: '3'
services:
html:
container_name: gulp-docker-test
restart: always
build: .
ports:
- '80:3000'
Мои проблемы сейчас:
Прежде всего, я действительно запутался в рабочем процессе докера.Правильно ли я понимаю, если я запущу:
docker build . --tag gulp-docker-test
Я создам на моем компьютере новый docker-контейнер с содержимым dockerfile?Если мне нужно что-то обновить внутри, я должен запустить его снова, чтобы обновить контейнер?
Если я использую:
docker start gulp-docker-test
, он запустит контейнер?Что если я что-то изменит внутри?Будет ли это снова при перезагрузке контейнера?Или он пропал, потому что это только временный образ?
Кроме того, если я пытаюсь запустить его, я получаю эту ошибку:
ERROR: for gulp-docker-test Cannot start service html: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"gulp --version\": executable file not found in $PATH": unknown
ERROR: for html Cannot start service html: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"gulp --version\": executable file not found in $PATH": unknown
Я пробовал эти вещи: выполнить его с execудаляя кавычки внутри CMD из Dockerfile, но я думаю, что мне не хватает некоторых базовых знаний.Я не понимаю, как загрузить этот контейнер внутри оболочки, чтобы докер знал путь $.
Заранее спасибо за помощь
Редактировать:
Я узнал, как запустить Docker с оболочкой.
docker run -it --entrypoint bash gulp-docker-test3
root@8a27dc3a9c85:/usr/src/app# gulp -v
[15:01:53] CLI version 2.0.1
[15:01:53] Local version 4.0.0
root@8a27dc3a9c85:/usr/src/app# gulp
[15:02:38] Using gulpfile /usr/src/app/gulpfile.js
[15:02:38] Starting 'default'...
Default Task von Gulp 4.0 für Docker
[15:02:38] Finished 'default' after 4.28 ms
root@8a27dc3a9c85:/usr/src/app#
Похоже, это должно работать, если я могу добавить bash по умолчанию в dockerfile.