gpt4 book ai didi

github - 用于从git克隆的构建代码的Docker文件

转载 作者:行者123 更新时间:2023-12-02 19:37:20 25 4
gpt4 key购买 nike

我已经从github克隆了FreeCAD的副本,并且试图创建一个docker文件,以便可以在我的机器上本地开发它。

目标是:

  • 我的机器上有git代码的本地副本
  • 我可以修改代码
  • 我可以构建调试并释放镜像(我需要创建两个单独的镜像吗?)
  • 可以访问我机器上的代码,以便可以将git用于源代码控制

  • 这是我的Dockerfile的内容:
    # Get base image
    FROM phusion/baseimage

    # Use baseimage-docker's init system.
    CMD ["/sbin/my_init"]

    # Get the build pre-requisites
    RUN apt-get update
    RUN apt-get install -y build-essential cmake python python-matplotlib libtool
    RUN apt-get install -y libcoin80-dev libsoqt4-dev
    RUN apt-get install -y libxerces-c-dev libboost-dev libboost-filesystem-dev
    RUN apt-get install -y libboost-regex-dev
    RUN apt-get install -y libboost-program-options-dev libboost-signals-dev
    RUN apt-get install -y libboost-thread-dev libboost-python-dev libqt4-dev
    RUN apt-get install -y libqt4-opengl-dev qt4-dev-tools python-dev
    RUN apt-get install -y python-pyside pyside-tools
    RUN apt-get install -y liboce*-dev oce-draw
    RUN apt-get install -y libeigen3-dev libqtwebkit-dev libshiboken-dev
    RUN apt-get install -y libpyside-dev libode-dev swig libzipios++-dev
    RUN apt-get install -y libfreetype6 libfreetype6-dev

    # to make Coin to support additional image file formats
    RUN apt-get install -y libsimage-dev

    # to register your installed files into your system's package manager, so yo can easily uninstall later
    RUN apt-get install -y checkinstall

    # needed for the 2D Drafting module
    RUN apt-get install -y python-qt4 python-pivy

    # doxygen and libcoin80-doc (if you intend to generate source code documentation)
    RUN apt-get install -y doxygen libcoin80-doc

    # libspnav-dev (for 3Dconnexion devices support like the Space Navigator or Space Pilot)
    RUN apt-get install -y libspnav-dev

    # CMAke related issue for compiling on Ubuntu Xenial: http://forum.freecadweb.org/viewtopic.php?f=4&t=16292
    RUN apt-get install -y libmedc-dev
    RUN apt-get install -y libvtk6-dev
    RUN apt-get install -y libproj-dev

    # Get git
    RUN apt-get install -y git

    RUN git clone https://github.com/FreeCAD/FreeCAD.git freecad

    RUN cd freecad
    RUN mkdir freecad-debug
    RUN cd freecad-debug
    # command below is just a diagnostic to let me know wth I am (output is: /)
    # RUN pwd
    RUN cmake ../ -DFREECAD_USE_EXTERNAL_PIVY=1 -DCMAKE_BUILD_TYPE=Debug .
    #cmake -DFREECAD_USE_EXTERNAL_PIVY=1 -DCMAKE_BUILD_TYPE=Release .
    RUN make

    我尝试使用以下命令构建镜像:
    docker build -tag freeCAD-my-fork .
    一切正常,直到我进行第一个cmake调用。然后,我得到以下错误:
    CMake Error: The source directory "/" does not appear to contain CMakeLists.txt.
    Specify --help for usage, or press the help button on the CMake GUI.
    The command '/bin/sh -c cmake ../ -DFREECAD_USE_EXTERNAL_PIVY=1 -DCMAKE_BUILD_TYPE=Debug .' returned a non-zero code: 1

    我在Dockerfile中放置了一个 RUN pwd,因此我可以找到cmake命令的运行位置,而我惊讶地发现它是从根目录运行的。

    我认为问题是由我使用relative引起的,并且可以通过绝对路径解决-但是在克隆等时指定 /path/to/my/copy/freecad,问题仍然存在。

    如何编写Dockerfile,以实现上面概述的目标(在问题开始时说明)?

    最佳答案

    docker中的默认WORKDIR是“/”。所有docker命令都将在该目录中执行。更改WORKDIR(https://docs.docker.com/engine/reference/builder/#workdir)或在一层中执行所有操作(在一个RUN命令中)有两种选择。我采用了第二种方法。

    克隆和构建源代码都在Docker的一层中执行。

    RUN git clone https://github.com/FreeCAD/FreeCAD.git freecad \
    && cd freecad \
    && mkdir freecad-debug \
    && cd freecad-debug \
    && cmake ../ -DFREECAD_USE_EXTERNAL_PIVY=1 -DCMAKE_BUILD_TYPE=Debug . \
    && make

    关于github - 用于从git克隆的构建代码的Docker文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43438987/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com