Объедините два docker изображения в одно - PullRequest
0 голосов
/ 14 апреля 2020

Название может быть немного странным и вводящим в заблуждение, в основном я хочу сделать следующее:

Мне нужен сервер node.js, который запускает следующий скрипт из файла Docker ниже. Я не хочу запускать docker внутри docker, поэтому мне нужно объединить скрипт и nodejs сервер, но я не знаю как, так как я совсем новичок в docker.

Должен ли я добавить конфигурацию для среды node js в докер-файл ниже или создать новый докер-файл, который зависит от этого? А что мне делать? Тем не менее, как мне это сделать?

FROM leon/usd:latest

WORKDIR /usr/src/ufg

# Configuration
ARG UFG_RELEASE="3bf441e0eb5b6cfbe487bbf1e2b42b7447c43d02"
ARG UFG_SRC="/usr/src/ufg"
ARG UFG_INSTALL="/usr/local/ufg"
ENV USD_DIR="/usr/local/usd"
ENV LD_LIBRARY_PATH="${USD_DIR}/lib:${UFG_SRC}/lib"
ENV PATH="${PATH}:${UFG_INSTALL}/bin"
ENV PYTHONPATH="${PYTHONPATH}:${UFG_INSTALL}/python"

# Build + install usd_from_gltf
RUN git init && \
    git remote add origin https://github.com/google/usd_from_gltf.git && \
    git fetch --depth 1 origin "${UFG_RELEASE}" && \
    git checkout FETCH_HEAD && \
    python "${UFG_SRC}/tools/ufginstall/ufginstall.py" -v "${UFG_INSTALL}" "${USD_DIR}" && \
    cp -r "${UFG_SRC}/tools/ufgbatch" "${UFG_INSTALL}/python" && \
    rm -rf "${UFG_SRC}" "${UFG_INSTALL}/build" "${UFG_INSTALL}/src"

RUN mkdir /usr/app
WORKDIR /usr/app
# Start the service

ENTRYPOINT ["usd_from_gltf"]
CMD ["usd_from_gltf"]

1 Ответ

0 голосов
/ 14 апреля 2020

В случае с Node вы можете просто добавить инструкции, чтобы загрузить тарболл Node.js и распаковать его на месте. Это основано на официальном Dockerfile Node , который выполняет дополнительную проверку подлинности, и т. Д. c.

RUN \
  cd /tmp \
  && curl -fsSLO --compressed "https://nodejs.org/dist/v13.12.0/node-v13.12.0-linux-x64.tar.xz" \
  && tar -xJf "node-v13.12.0-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
  && rm "node-v13.12.0-linux-x64.tar.xz" \
  && ln -s /usr/local/bin/node /usr/local/bin/nodejs

Если вам также нужен менеджер пакетов Yarn, инструкции по его добавлению приведены ниже. в том же связанном файле Docker.

Другой вариант, , поскольку похоже, что leon/usd использует базовый образ Debian / Ubuntu , это просто установить Node.js с использованием Linux образа. менеджер пакетов дистрибутива, например RUN apt-get update && apt-get install nodejs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...