ВОПРОС: (отредактировано: решение добавлено в конце этого поста)
У меня есть проект VueJS (разработанный в веб-пакете), который я хочу иметь размер докера.
Мой Dockerfile выглядит так:
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "run", "dev"]
, который в основном следует за потоком из этого поста .
У меня также есть файл .dockerignore, где яскопировал те же файлы из моего .gitignore, и он выглядит так:
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
.git/
Я создал образ докера с помощью команды:
docker build -t test/my-image-name .
, а затем запустил его в контейнер сКоманда:
docker run -it -p 8080:8080 --rm --name my-container-name test/my-image-name
В результате этой последней команды я получил тот же вывод в терминале (который обычно отображается в случаях отладки с помощью webpack / vuejs), как при локальном запуске приложения:
НО : в конце, в окне браузера приложение не загружено
Если я запускаю команды docker images
и docker ps
, я вижу, что образ и контейнер есть, и при их создании я неУ него нет сообщений об ошибках.
Я нашел это сообщение и несколько раз пытался изменить файл Docker следующим образом:
Опция 1
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
Вариант 2
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
EXPOSE 8080
CMD ["npm", "run", "dev"]
Но, похоже, ни один из них не работает.
кстати.мой файл package.json выглядит так:
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
}
Поэтому мне интересно: как сделать так, чтобы приложение открывалось в браузере из образа докера?
РЕШЕНИЕ : нет, конечно, если это было причиной исправления, но я сделал две вещи.Как уже упоминалось, я работаю с VueJS и веб-пакетом, поэтому внутри файла с именем config/index.js
, который изначально выглядел так:
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: 'localhost', // <---- this one
port: 8080,
Я изменил свойство host
с 'localhost'
на '0.0.0.0'
, удалил строку EXPOSE 8080
из Dockerfile (исходный файл Docker из моего вопроса выше), так как я заметил, что порт из файла конфигурации используется по умолчанию, а также перезапустил установленный инструмент Docker на моем локальном компьютере.