Файл Docker (.dockerignore
здесь не отображается, хотя он находится в том же каталоге):
FROM node:8
WORKDIR /usr/src/myapplication
COPY package*.json ./
RUN npm install
RUN npm ci --only=production
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
... где npm start
должен выполнить tslint
для устранения проблем с кодом, tsc
для компиляции исходного кода TypeScript и, наконец, node
в скомпилированном файле index.js
, который раскручивает сервер express
. Довольно стандартная конфигурация, но все же работает нормально.
Но мне кажется, что я неправильно использую Docker: почему я перемещаю еще не скомпилированный код и компилирую его позже, тогда как я мог скомпилировать его раньше? Более того, я должен держать:
"dependencies": {
"express": "^4.16.4",
"typescript": "^3.4.5",
"@types/express": "^4.16.1",
"@types/node": "^11.13.8",
"tslint": "^5.16.0"
}
... эти зависимости как devDependencises
, так и dependencies
, и компилятор предупреждает меня об этом.
Я не парень из Докера, совсем нет, так есть ли лучший способ?