Как скомпилировать машинопись в Dockerfile - PullRequest
0 голосов
/ 28 июня 2018

У меня проблемы с компиляцией моего машинописного приложения nodejs из Dockerfile. Когда я создаю свой образ докера для проверки, в нем отсутствует папка dist.

Dockerfile:

# Template: Node.js dockerfile
# Description: Include this file in the root of the application to build a docker image.

# Enter which node build should be used. E.g.: node:argon 
FROM node:latest

# Create app directory for the docker image
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app/dist

# Install app dependencies from package.json. If modules are not included in the package.json file enter a RUN command. E.g. RUN npm install <module-name>
COPY package.json /usr/src/app/
RUN     npm install
RUN     npm install tsc -g
RUN     tsc

# Bundle app source
COPY . /usr/src/app

# Enter the command which should be used when the image starts up. E.g. CMD ["node", "app.js"]
CMD [ "node", "server.js"]

Когда я запускаю образ локально и ls, чтобы показать файлы / папки:

# ls
node_modules  package-lock.json  package.json  src

Есть предложения, где я иду не так?

1 Ответ

0 голосов
/ 12 сентября 2018

Насколько я знаю,
WORKDIR не нужно создавать самостоятельно. Вот документация для WORKDIR .

После этого вам не нужно копировать вручную в определенную папку, потому что после команды WORKDIR команда copy скопирует файлы для вас.

Поэтому я предлагаю вам использовать следующий Dockerfile:

    FROM node:alpine
    WORKDIR /usr/yourapplication-name
    COPY package.json .
    RUN npm install\
        && npm install tsc -g
    COPY . .
    RUN tsc
    CMD ["node", "./dist/server.js"]

Как крошечный совет: в моем package.json я бы использовал машинописный текст как зависимость, а затем просто использовал бы следующий файл:

    FROM node:alpine
    WORKDIR /usr/yourapplication-name
    COPY package.json .
    RUN npm install
    COPY . .
    RUN tsc
    CMD ["node", "./dist/server.js"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...