Фасад здания перед созданием Docker изображения - PullRequest
1 голос
/ 04 февраля 2020

Я новичок в Docker и в настоящее время работаю над докернизированием некоторых приложений.

Структура проекта:

-PlayProject

-------app
----------controllers
----------models
----------views

-------ci
-------conf
-------project

-------public
----------css
----------js
----------img
----------fonts

-------sbt-cache
-------src
-------target

-------front
------------header (npm folder)
------------footer (npm folder)
-------Dockerfile
----*

Проект разработан с использованием PlayFramework ( с sbt в качестве инструмента сборки) на Backend и Reactjs на передней панели. Передняя часть создается из модулей gtwo (верхний и нижний колонтитулы).

В моем dockerfile мне нужно запустить сборку фронтальных модулей (выполнить команды 'npm run build' в верхнем и нижнем колонтитулах папок), чтобы обновить publi c папка перед соединением

Мой Dockerfile:

FROM openjdk:8

ENV HEADER front/header
ENV FOOTER front/footer
ENV PROJECT_HOME /usr/src
ENV SBT_VERSION 1.2.1

#install node
RUN  \
        curl -sL https://deb.nodesource.com/setup_4.x | bash  && \
        # and install node
        apt-get update && \
        apt-get install nodejs && \
        # confirm that it was successful
        node -v && \
        # npm installs automatically
        npm -v

WORKDIR $HEADER/

RUN  \
         echo $(ls -1 $HEADER/) && \
        npm cache clean && \
        npm i && \
        npm run build

WORKDIR $FOOTER/

RUN \
        echo $(ls -1 $FOOTER/) && \
        npm cache clean && \
        npm i && \
        npm run build


RUN mkdir -p $PROJECT_HOME/sbt $PROJECT_HOME/app

WORKDIR $PROJECT_HOME/sbt

# Install curl
RUN \
       apt-get update && \
       apt-get -y install curl && \
       apt-get -y install vim

# Install sbt
RUN \
        curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
        dpkg -i sbt-$SBT_VERSION.deb && \
        rm sbt-$SBT_VERSION.deb && \
        apt-get update && \
        apt-get -y install sbt


COPY . $PROJECT_HOME/app
WORKDIR $PROJECT_HOME/app

EXPOSE 9000

Проблема в том, что я не могу локализовать передние папки и выполнять свои команды npm. что ты думаешь?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Похоже, что вы на самом деле не отправляете свой локальный источник в контейнер Docker, поэтому создавать нечего.

Попробуйте добавить строку типа COPY . . перед переключением WORKDIR.

0 голосов
/ 04 февраля 2020

Вы не указали абсолютный путь к своей первой инструкции WORKDIR:

Инструкция WORKDIR может использоваться несколько раз в Dockerfile. Если указан относительный путь, он будет относительно пути предыдущей инструкции WORKDIR. Например:

WORKDIR / a

WORKDIR b

WORKDIR c

RUN pwd

Вывод конечного pwd команда в этом Dockerfile будет иметь вид /a/b/c.

, указанный здесь

Возможно, вы захотите заменить свой первый WORKDIR следующим образом:

WORKDIR $PROJECT_HOME/$HEADER
COPY . .
# instead of just WORKDIR $HEADER/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...