我正在创建一个Docker映像作为构建环境,可以在其中安装项目并对其进行构建。对于构建,我使用cmake和柯南。该图像的dockerfile:
FROM alpine:3.9
RUN ["apk", "add", "--no-cache", "gcc", "g++", "make", "cmake", "python3", "python3-dev", "linux-headers", "musl-dev"]
RUN ["pip3", "install", "--upgrade", "pip"]
RUN ["pip3", "install", "conan"]
WORKDIR /project
文件
~/.conan/profiles/default
是在我致电
之后创建的conan install ..
,以便这些文件在容器中而不是在映像中创建。柯南的默认行为是设置
compiler.libcxx=libstdc++
我想运行类似的东西
RUN ["sed", "-i", "s/compiler.libcxx=libstdc++/compiler.libcxx=libstdc++11/", "~/.conan/profiles/default"]
更改libcxx值,但此文件目前不存在。我发现柯南创建默认配置文件的唯一方法是安装一些东西。
目前,我正在使用此容器
docker run --rm -v $(dirname $(realpath $0))/project:/project build-environment /bin/sh -c "\
rm -rf build && \
mkdir build && \
cd build && \
conan install -s compiler.libcxx=libstdc++11 .. --build missing && \
cmake .. && \
cmake --build . ; \
chown -R $(id -u):$(id -u) /project/build \
"
但是我需要删除-s compiler.libcxx=libstdc++11
,因为它应该取决于映像,而不是由构建脚本修复的。
是否可以在不安装任何东西的情况下初始化映像内的柯南并编辑配置?目前,我正计划自己编写整个配置,但这似乎有点太多,因为我想使用默认配置并只更改一行。
答案 0 :(得分:1)
您还可以从正在运行的容器中创建映像。尝试在正在运行的容器中安装柯南,然后为其创建映像。由于将其安装在运行容器中,因此仅具有所有依赖关系。要创建该图像,您可以点击此链接
https://docs.docker.com/engine/reference/commandline/commit/