我是 Docker 的新手。我想通过使用 make 命令构建一个 C++ 库来构建一个 docker 镜像。我在 Dockerfile 中这样做的方式是
Dockerfile 代码写在下面。
我面临的问题是,即使删除了源代码,最终的图像尺寸还是很大。
由于 Dockerfile 的每一行都创建了不同的层,因此有一种方法可以使用 curl 或 wget 下载源代码,然后删除同一层中的源代码。但我不喜欢这个解决方案。
FROM alpine
RUN apk update && apk add <required_packages>
COPY source_code /tmp/source_code
RUN make -C /tmp/source_code && \
mkdir /libraries/
cp /tmp/lib/* /libraries/
rm -rf /tmp/*
Run Code Online (Sandbox Code Playgroud)
我只想最小化最终图像的大小。这是我这样做的正确方法还是有更好的方法?请帮忙。
我有以下 C++ 代码。
string getName()
{
return "C++";
}
void printName(const char* name)
{
cout << name << endl;
}
int main()
{
printName(getName().c_str());
}
Run Code Online (Sandbox Code Playgroud)
该函数getName返回一个string. 我将函数c_str的指针传递给函数。我想知道在调用函数之前返回的内容是否会被删除。如果不是那么什么时候删除返回值。stringprintNamestringprintName()
alpine-linux ×1
c++ ×1
docker ×1
dockerfile ×1
lifetime ×1
makefile ×1
return-value ×1
string ×1
temporary ×1