【问题标题】:Building code cloned from git failed in dockerfile从 git 克隆的构建代码在 dockerfile 中失败
【发布时间】:2019-11-16 21:58:26
【问题描述】:

我想为Quassel IRC Core 创建一个 Dockerfile。我想从源代码构建它,所以我克隆了 repo 并想要编译,但我得到了这个有线错误。

CMake Error: The source directory "/tmp/quassel-src" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

这是我的 Dockerfile:

FROM ubuntu:18.04

MAINTAINER KeinNerd <github@keinnerd.net>

# install required packages for the build process
RUN \
 apt-get update && apt-get install -y \
  cmake \
  make \
  build-essential \
  libboost-all-dev \
  git-core \
  icu-devtools \
  libicu60 \
  libssl-dev \
  qtbase5-dev \
  libqt5dbus5 \
  qtbase5-dev-tools \
  qtscript5-dev \
  libqt5sql5-psql \
  libqt5sql5-sqlite \
  libqca-qt5-2-dev

# clone quassel-core source
RUN \
mkdir -p /tmp/quassel-src \
git clone https://github.com/quassel/quassel.git /tmp/quassel-src/ \
mkdir -p /tmp/quassel-src/build

# build the quassel-core
RUN \
cd /tmp/quassel-src/build && \ 
cmake \
        -DCMAKE_BUILD_TYPE="Release" \
        -DCMAKE_INSTALL_PREFIX=/usr/local/ \
        -DUSE_QT5=ON \
        -DWANT_CORE=ON \
        -DWANT_MONO=OFF \
        -DWANT_QTCLIENT=OFF \
        -DWITH_KDE=OFF \
        -DWITH_CRYPT=ON \
        /tmp/quassel-src && \
make && \
make install

# set environment variables
ENV HOME /config

# copy startfile
COPY start.sh /start.sh

# ports and volumes
VOLUME /config
EXPOSE 4242 4242

# start quassel-core
ENTRYPOINT ["/start.sh"]

当我在测试机器上的终端中运行代码时,它会编译和安装而不会出错。但是,如果我构建 docker 映像,我会收到错误 .. 但它的代码相同。

cd /tmp/quassel-src/build && \ 
cmake \
        -DCMAKE_BUILD_TYPE="Release" \
        -DCMAKE_INSTALL_PREFIX=/usr/local/ \
        -DUSE_QT5=ON \
        -DWANT_CORE=ON \
        -DWANT_MONO=OFF \
        -DWANT_QTCLIENT=OFF \
        -DWITH_KDE=OFF \
        -DWITH_CRYPT=ON \
        /tmp/quassel-src && \
make && \
make install

我希望有人可以帮助我。

【问题讨论】:

    标签: docker makefile cmake


    【解决方案1】:

    尝试添加:WORKDIR /tmp/quassel-src/build,而不是RUN cd /tmp/quassel-src/build,并将COPY start.sh /start.sh修改为COPY start.sh ../start。 sh(也许这个脚本需要在那个目录中)

    cd 的效果只持续当前的 RUN 命令。下一次 RUN 将从当前的 WORKDIR 开始。

    在设置 HOME 的 ENV 之前也尝试添加:VOLUME /config。

    【讨论】:

    猜你喜欢
    • 2012-06-18
    • 2017-05-13
    • 2014-09-03
    • 2019-05-10
    • 2011-06-11
    • 2017-01-10
    • 2015-06-12
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多