{"id":45642,"date":"2023-04-21T11:59:17","date_gmt":"2023-09-06T08:02:42","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/"},"modified":"2024-04-30T00:31:38","modified_gmt":"2024-04-29T16:31:38","slug":"45642-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/","title":{"rendered":""},"content":{"rendered":"<h2>\u300cRipGrep\u300d\uff08rg\uff09\u3092 Alpine \u306e Docker \u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u304b\u3059<\/h2>\n<p>RipGrep \u5165\u308a\u306e Alpine \u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u308b Dockerfile \u3068\u30b5\u30f3\u30d7\u30eb\u3067\u3059\u3002Intel \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e31\uff08Core i5\u3001MacBook Pro\uff09\u3067\u52d5\u4f5c\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\uff08\u6b8b\u5ff5\u306a\u304c\u3089\u30e9\u30ba\u30d1\u30a4\u306a\u3069\u306e ARM \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30e9\u30ba\u30d1\u30a4\uff08ARM\uff09\u5bfe\u5fdc\u306e\u5b9f\u9a13\u304c\u306f\u3058\u307e\u3063\u305f\u3088\u3046\u3067\u3059\u3002\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#  Dockerfile to build RipGrep (rg) for Alpine linux image<\/span>\r\n<span class=\"c\">#  via multi stage build<\/span>\r\n<span class=\"c\"># =========================================================<\/span>\r\n<span class=\"c\"># Note: As of 2019\/02\/06, rust-musl-builder is not compa-<\/span>\r\n<span class=\"c\">#       tible to ARM architecture such as RaspberryPi.<\/span>\r\n\r\n<span class=\"c\"># First stage (build)<\/span>\r\n<span class=\"c\"># -------------------<\/span>\r\n<span class=\"k\">FROM<\/span><span class=\"s\"> ekidd\/rust-musl-builder:stable AS rg-build<\/span>\r\n\r\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> \/home\/rust\/src<\/span>\r\n\r\n<span class=\"k\">RUN <\/span><span class=\"nb\">set<\/span> <span class=\"nt\">-x<\/span> <span class=\"o\">&amp;&amp;<\/span><span class=\"se\">\\\r\n<\/span>    : <span class=\"s2\">\"Cloning git from ripgrep repo\"<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    git clone https:\/\/github.com\/BurntSushi\/ripgrep <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    : <span class=\"s2\">\"Buildng ripgrep\"<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    <span class=\"nb\">cd <\/span>ripgrep <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    cargo build <span class=\"nt\">--release<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    : <span class=\"s2\">\"Show version\"<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    <span class=\"nb\">cd<\/span> .\/target\/x86_64-unknown-linux-musl\/release <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    .\/rg <span class=\"nt\">--version<\/span>\r\n\r\n<span class=\"c\"># Second stage (copy)<\/span>\r\n<span class=\"c\"># -------------------<\/span>\r\n<span class=\"k\">FROM<\/span><span class=\"s\"> alpine AS ripgrep<\/span>\r\n\r\n<span class=\"k\">COPY<\/span><span class=\"s\"> --from=rg-build \\<\/span>\r\n     \/home\/rust\/src\/ripgrep\/target\/x86_64-unknown-linux-musl\/release\/rg \\\r\n     \/usr\/local\/bin\r\n<\/code><\/pre>\n<h4>Docker\u30a4\u30e1\u30fc\u30b8\u306e\u4f5c\u6210\u4f8b<\/h4>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">ls\r\n<\/span>Dockerfile\r\n<span class=\"nv\">$ <\/span><span class=\"c\"># \u30d3\u30eb\u30c9\u958b\u59cb<\/span>\r\n<span class=\"nv\">$ <\/span>docker build <span class=\"nt\">-t<\/span> myripgrep <span class=\"nb\">.<\/span>\r\n\uff08\u9577\u3044\u306e\u3067\u7701\u7565\uff09\r\nSuccessfully built d2597650d47b\r\nSuccessfully tagged ripgrep:latest\r\n<\/code><\/pre>\n<details>\u30e9\u30ba\u30d1\u30a4\u3067\u300cstandard_init_linux.go:190: exec user process caused &#8220;exec format error&#8221;\u300dRaspberryPi \u3067\u30d3\u30eb\u30c9\u3059\u308b\u3068\u300cstandard_init_linux.go:190: exec user process caused &#8220;exec format error&#8221;\u300d<\/p>\n<p>RaspberryPi3 \u306a\u3069\u306e ARM \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u5834\u5408\u3001Docker \u306e\u30d3\u30eb\u30c9\u6642\u306b\u5931\u6557\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001ekidd\/rust-musl-builder \u306e\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u304c ARM \u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3067\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5358\u4f53\u3067\u3082\u8d77\u52d5\u3057\u307e\u305b\u3093\u3002<\/p>\n<p>$ uname -a<br \/>\nLinux UTouchMyPi 4.14.41-v7+ #1113 SMP Thu May 17 16:29:48 BST 2018 armv7l GNU\/Linux<br \/>\n$<br \/>\n$ docker pull ekidd\/rust-musl-builder:stable<br \/>\n$ docker run &#8211;rm -it ekidd\/rust-musl-builder:stable \/bin\/bash<br \/>\nstandard_init_linux.go:190: exec user process caused &#8220;exec format error&#8221;<\/p>\n<p>Issue \u306b\u3082\u4e0a\u304c\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\u3001\u300c\u5f53\u9762\u5bfe\u5fdc\u4e88\u5b9a\u306f\u306a\u3044\u300d\u3068\u306e\u3053\u3068\u3002\u3068\u307b\u307b\u3002<\/p>\n<\/details>\n<h4>ripgrep\u30a4\u30e1\u30fc\u30b8\u306e\u30b5\u30a4\u30ba<\/h4>\n<p>\u7d04 33MB \u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> docker image <span class=\"nb\">ls<\/span> | <span class=\"nb\">grep <\/span>myripgrep\r\n<span class=\"go\">myripgrep           latest          d2597650d47b        2 hours ago         32.9MB\r\n<\/span><\/code><\/pre>\n<p>\u6700\u521d\u306e\u30b9\u30c6\u30fc\u30b8\u3067\u5229\u7528\u3057\u305f Rust \u306e\u30d0\u30a4\u30ca\u30ea\u30fb\u30d3\u30eb\u30c9\u74b0\u5883\u306e rust-musl-builder \u306e\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3044\u306e\u3067\u3001\u30d0\u30a4\u30ca\u30ea\u304c\u51fa\u6765\u4e0a\u304c\u3063\u305f\u3089 rust-musl-builder \u306e\u30b3\u30f3\u30c6\u30ca\u3068\u30a4\u30e1\u30fc\u30b8\u306f\u524a\u9664\u3057\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<h2>rg\u306e\u57fa\u672c\u69cb\u6587<\/h2>\n<pre class=\"post-pre\"><code><span class=\"no\">USAGE<\/span><span class=\"o\">:<\/span>\r\n    <span class=\"n\">rg<\/span> <span class=\"p\">[<\/span><span class=\"no\">OPTIONS<\/span><span class=\"p\">]<\/span> <span class=\"no\">PATTERN<\/span> <span class=\"p\">[<\/span><span class=\"no\">PATH<\/span> <span class=\"mf\">...<\/span><span class=\"p\">]<\/span>\r\n    <span class=\"n\">rg<\/span> <span class=\"p\">[<\/span><span class=\"no\">OPTIONS<\/span><span class=\"p\">]<\/span> <span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"n\">e<\/span> <span class=\"no\">PATTERN<\/span> <span class=\"mf\">...<\/span><span class=\"p\">]<\/span> <span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"n\">f<\/span> <span class=\"no\">PATTERNFILE<\/span> <span class=\"mf\">...<\/span><span class=\"p\">]<\/span> <span class=\"p\">[<\/span><span class=\"no\">PATH<\/span> <span class=\"mf\">...<\/span><span class=\"p\">]<\/span>\r\n    <span class=\"n\">rg<\/span> <span class=\"p\">[<\/span><span class=\"no\">OPTIONS<\/span><span class=\"p\">]<\/span> <span class=\"o\">--<\/span><span class=\"n\">files<\/span> <span class=\"p\">[<\/span><span class=\"no\">PATH<\/span> <span class=\"mf\">...<\/span><span class=\"p\">]<\/span>\r\n    <span class=\"n\">rg<\/span> <span class=\"p\">[<\/span><span class=\"no\">OPTIONS<\/span><span class=\"p\">]<\/span> <span class=\"o\">--<\/span><span class=\"n\">type<\/span><span class=\"o\">-<\/span><span class=\"k\">list<\/span>\r\n    <span class=\"n\">command<\/span> <span class=\"o\">|<\/span> <span class=\"n\">rg<\/span> <span class=\"p\">[<\/span><span class=\"no\">OPTIONS<\/span><span class=\"p\">]<\/span> <span class=\"no\">PATTERN<\/span>\r\n<\/code><\/pre>\n<p>$ rg \u30e1\u30ad\u30b7\u30b3 ~\/Documents \u306e\u3088\u3046\u306b $ rg \u691c\u7d22\u30d1\u30bf\u30fc\u30f3 \u691c\u7d22\u30d1\u30b9 \u3067\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u691c\u7d22\u30d1\u30bf\u30fc\u30f3\u306f\u6b63\u898f\u8868\u73fe\u304c\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002\u691c\u7d22\u30d1\u30b9\u3092\u7701\u7565\u3057\u305f\u5834\u5408\u306f\u3001\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4ee5\u4e0b\u3092\u691c\u7d22\u3057\u307e\u3059\u3002<\/p>\n<h4>\u30db\u30b9\u30c8\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3057\u3066\u691c\u7d22\u3059\u308b\u4f8b<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> docker run <span class=\"nt\">--rm<\/span> <span class=\"nt\">-it<\/span> <span class=\"nt\">-v<\/span> \/path\/to\/you\/local\/dir:\/data myripgrep \/bin\/sh\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># OS\u60c5\u5831<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"nb\">cat<\/span> \/etc\/os-<span class=\"k\">*<\/span>\r\n<span class=\"go\">NAME=\"Alpine Linux\"\r\nID=alpine\r\nVERSION_ID=3.8.2\r\nPRETTY_NAME=\"Alpine Linux v3.8\"\r\nHOME_URL=\"http:\/\/alpinelinux.org\"\r\nBUG_REPORT_URL=\"http:\/\/bugs.alpinelinux.org\"\r\n<\/span><span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># rg \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d<\/span>\r\n<span class=\"gp\">\/ #<\/span> rg <span class=\"nt\">--version<\/span>\r\n<span class=\"go\">ripgrep 0.10.0 (rev 147e96914c)\r\n-SIMD -AVX (compiled)\r\n+SIMD +AVX (runtime)\r\n\r\n<\/span><span class=\"gp\">\/ #<\/span> <span class=\"c\"># rg \u306e\u5834\u6240<\/span>\r\n<span class=\"gp\">\/ #<\/span> which rg\r\n<span class=\"go\">\/usr\/local\/bin\/rg\r\n<\/span><span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\">#\u3000\u30de\u30a6\u30f3\u30c8\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u78ba\u8a8d<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"nb\">ls<\/span> \/data\r\n<span class=\"go\">barge_test           gimp_test            php_test             sed_test\r\nbash_test            git-sign_test        python_test          wav-for-test-sound\r\ndocker_test          git_test             reboot_test          word2vec_test\r\nflutter_test         github-encrypt_test  ruby_test\r\ngcc_test             go_test              scp-spams_test\r\n<\/span><span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># \u30d8\u30eb\u30d7\u8868\u793a<\/span>\r\n<span class=\"gp\">\/ #<\/span> rg <span class=\"nt\">--help<\/span>\r\n<span class=\"go\">\uff08\u9577\u3044\u306e\u3067\u7701\u7565\uff09\r\n<\/span><span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># \/data \u5185\u306e\u300cstdio.h\u300d\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22<\/span>\r\n<span class=\"gp\">\/ #<\/span> rg stdio.h \/data\r\n<span class=\"go\">\/data\/gcc_test\/test.c\r\n<\/span><span class=\"gp\">1:#<\/span>include &lt;stdio.h&gt;\r\n<span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># \/data \u5185\u306e\u300c\u30e1\u30ad\u30b7\u30b3\u300d\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22<\/span>\r\n<span class=\"gp\">\/ #<\/span> rg \u30e1\u30ad\u30b7\u30b3 \/data\r\n<span class=\"go\">\/data\/word2vec_test\/DIC_KANA.original.csv\r\n2654:\u3042\u3081\u308a\u304b\u3081\u304d\u3057\u3053\u305b\u3093\u305d\u3046 Mexican-American War \u540d\u8a5e \u30a2\u30e1\u30ea\u30ab\u30e1\u30ad\u30b7\u30b3\u6226\u4e89\r\n27414:\u30cb\u30e5\u30fc\u30e1\u30ad\u30b7\u30b3 New Mexico \u540d\u8a5e\r\n40744:\u3081\u304d\u3057\u3053 Mexico \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\r\n40745:\u3081\u304d\u3057\u3053\u3058\u3093 Mexican (person) \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u4eba\r\n40746:\u3081\u304d\u3057\u3053\u308f\u3093 Gulf of Mexico \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u6e7e\r\n40747:\u3081\u304d\u3057\u3053\u308f\u3093\u308a\u3085\u3046 Gulf Stream \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u6e7e\u6d41\r\n\r\n\/data\/word2vec_test\/DIC_KANA.txt\r\n2654:\u3042\u3081\u308a\u304b\u3081\u304d\u3057\u3053\u305b\u3093\u305d\u3046 Mexican-American War \u540d\u8a5e \u30a2\u30e1\u30ea\u30ab\u30e1\u30ad\u30b7\u30b3\u6226\u4e89\r\n27414:\u30cb\u30e5\u30fc\u30e1\u30ad\u30b7\u30b3 New Mexico \u540d\u8a5e\r\n40744:\u3081\u304d\u3057\u3053 Mexico \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\r\n40745:\u3081\u304d\u3057\u3053\u3058\u3093 Mexican (person) \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u4eba\r\n40746:\u3081\u304d\u3057\u3053\u308f\u3093 Gulf of Mexico \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u6e7e\r\n40747:\u3081\u304d\u3057\u3053\u308f\u3093\u308a\u3085\u3046 Gulf Stream \u540d\u8a5e \u30e1\u30ad\u30b7\u30b3\u6e7e\u6d41\r\n<\/span><span class=\"gp\">\/ #<\/span>\r\n<span class=\"gp\">\/ #<\/span> <span class=\"c\"># \/data \u5185\u306e\u300cstudio.h\u300d\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u3001\u7d50\u679c\u3092 JSON \u3067\u8868\u793a<\/span>\r\n<span class=\"gp\">#<\/span> rg <span class=\"nt\">--json<\/span> stdio.h \/data\r\n<span class=\"go\">{\"type\":\"begin\",\"data\":{\"path\":{\"text\":\"\/data\/gcc_test\/test.c\"}}}\r\n<\/span><span class=\"gp\">{\"type\":\"match\",\"data\":{\"path\":{\"text\":\"\/data\/gcc_test\/test.c\"},\"lines\":{\"text\":\"#<\/span>include\r\n<span class=\"gp\"> &lt;stdio.h&gt;<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"},\"<\/span>line_number<span class=\"s2\">\":1,\"<\/span>absolute_offset<span class=\"s2\">\":0,\"<\/span>submatches<span class=\"s2\">\":[{\"<\/span>match<span class=\"s2\">\":\r\n<\/span><span class=\"go\">{\"text\":\"stdio.h\"},\"start\":10,\"end\":17}]}}\r\n{\"type\":\"end\",\"data\":{\"path\":{\"text\":\"\/data\/gcc_test\/test.c\"},\"binary_offset\":null,\"stats\":\r\n{\"elapsed\":\r\n{\"secs\":0,\"nanos\":1433800,\"human\":\"0.001434s\"},\"searches\":1,\"searches_with_match\":1,\r\n\"bytes_searched\":80,\"bytes_printed\":272,\"matched_lines\":1,\"matches\":1}}}\r\n{\"data\":{\"elapsed_total\":{\"human\":\"6.577406s\",\"nanos\":577405900,\"secs\":6},\"stats\":\r\n{\"bytes_printed\":272,\"bytes_searched\":80,\"elapsed\":\r\n{\"human\":\"0.001434s\",\"nanos\":1433800,\"secs\":0},\"matched_lines\":1,\"matches\":1,\"searches\":1,\r\n\"searches_with_match\":1}},\"type\":\"summary\"}\r\n<\/span><\/code><\/pre>\n<h2>\u52d5\u4f5c\u78ba\u8a8d\u74b0\u5883<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">macOS Mojave\uff08OSX 10.14.3\uff09<\/ul>\n<\/li>\n<\/ul>\n<p>uname -a : Darwin MacBook-Pro.local 18.2.0 Darwin Kernel Version 18.2.0: Thu Dec 20 20:46:53 PST 2018; root:xnu-4903.241.1~1\/RELEASE_X86_64 x86_64<\/p>\n<p>docker: brew cask docker \u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p>Docker version:<\/p>\n<p>$ docker version<br \/>\nClient: Docker Engine &#8211; Community<br \/>\nVersion: 18.09.0<br \/>\nAPI version: 1.39<br \/>\nGo version: go1.10.4<br \/>\nGit commit: 4d60db4<br \/>\nBuilt: Wed Nov 7 00:47:43 2018<br \/>\nOS\/Arch: darwin\/amd64<br \/>\nExperimental: false<\/p>\n<p>Server: Docker Engine &#8211; Community<br \/>\nEngine:<br \/>\nVersion: 18.09.0<br \/>\nAPI version: 1.39 (minimum version 1.12)<br \/>\nGo version: go1.10.4<br \/>\nGit commit: 4d60db4<br \/>\nBuilt: Wed Nov 7 00:55:00 2018<br \/>\nOS\/Arch: linux\/amd64<br \/>\nExperimental: false<\/p>\n<p>\u6240\u611f<\/p>\n<p>RipGrep on Alpine Base-image<\/p>\n<p>Rust \u7248 grep \u3068\u3082\u8a00\u3048\u308b\u3001\u7206\u901f\u306e\u6587\u5b57\u5217\u691c\u7d22\u30b3\u30de\u30f3\u30c9\u300crg\u300d\uff08RipGrep\uff09\u304c\u597d\u304d\u3067\u3059\u3002<\/p>\n<p>RigGrep\uff08rg\uff09\u3068\u306f<\/p>\n<p>RipGrep (rg)<br \/>\nripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern while respecting your gitignore rules. ripgrep has first class support on Windows, macOS and Linux, with binary downloads available for every release. ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.<br \/>\n\uff08BurntSushi\/ripgrep @ GitHub \u3088\u308a\uff09<\/p>\n<p>RipGrep\uff08rg\uff09\u3068\u306f<br \/>\nRipGrep\uff08rg\uff09\u306f\u3001grep \u306b\u4f3c\u305f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30fb\u30d9\u30fc\u30b9\u306e UTF-8 \u5bfe\u5fdc\u30c6\u30ad\u30b9\u30c8\u691c\u7d22\u30c4\u30fc\u30eb\u3067\u3059\u3002BurntSushi\u6c0f\u306b\u3088\u3063\u3066 Rust \u3067\u66f8\u304b\u308c\u3066\u304a\u308a\u3001Silver Searcher\uff08ag\uff09 \u306e\u4f7f\u3044\u3084\u3059\u3055\u3068 GNU grep \u306e\u672c\u6765\u306e\u30b9\u30d4\u30fc\u30c9\u3092\u517c\u306d\u5099\u3048\u3066\u3044\u307e\u3059\u3002 Windows, Mac, Linux \u306a\u3069\u306e OS \u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002<br \/>\n\uff08\u300c\u7206\u901f grep\u300cripgrep\u300d\u3092\u30e9\u30ba\u30d1\u30a4\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3010\u5b9f\u6e2c\u5024\u3042\u308a\u3011\u300d @ Qiita \u3088\u308a\uff09<\/p>\n<p>ripgrep \u306e Qiita \u8a18\u4e8b @ Google<\/p>\n<p>\u305d\u3053\u3067\u3001\u6700\u8fd1\u3044\u307e\u3055\u3089\u306a\u304c\u3089\u5b66\u7fd2\u3092\u59cb\u3081\u305f Docker \u3067 ripgrep \u3092\u826f\u3044\u611f\u3058\u3067\u4f7f\u3046\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u826f\u3044\u304b\u8003\u3048\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<p>\u307e\u305a\u306f\u300c\uff08Docker \u30b3\u30f3\u30c6\u30ca\u306b\uff09\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u30dc\u30ea\u30e5\u30fc\u30e0\u5185\u306b\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u3092 rg \u3067\u6587\u5b57\u5217\u691c\u7d22\u3059\u308b\u3060\u3051\u306e\u30b3\u30f3\u30c6\u30ca\u300d\u3092\u4f5c\u3063\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u52d5\u3044\u3066\u3057\u307e\u3048\u3070\u3001\u3042\u3068\u306f\u30b3\u30f3\u30c6\u30ca\u3092 API \u5316\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u9593\u3067\u5229\u7528\u3067\u304d\u305d\u3046\u3067\u3059\u3002<\/p>\n<p>\u6587\u5b57\u5217\u691c\u7d22\u306b\u7279\u5316\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u3067\u3042\u308b\u305f\u3081\u3001\u3067\u304d\u308c\u3070\u30a4\u30e1\u30fc\u30b8\u3092\u8efd\u304f\u3057\u305f\u3044\u306e\u3067\u8efd\u91cf OS \u3067\u6709\u540d\u306a Alpine Linux \u3092\u30d9\u30fc\u30b9\u30fb\u30a4\u30e1\u30fc\u30b8\u306b\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3057\u305f\u3002<\/p>\n<p>\u3057\u304b\u3057\u3001rg \u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306f\u305f\u304f\u3055\u3093\u3042\u308b2\u306e\u3067\u3059\u304c\u3001\u6b8b\u5ff5\u306a\u3053\u3068\u306b 2019\/02\/05 \u73fe\u5728 Alpine \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u300capk\u300d\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u30933\u3002<\/p>\n<p>\u305d\u3053\u3067\u3001Rust \u306e\u9759\u7684\u30ea\u30f3\u30af\u306a\u30d0\u30a4\u30ca\u30ea\u3092\u69cb\u7bc94\u3057\u3066\u304b\u3089\u3001\u305d\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30d7\u30ec\u30fc\u30f3\u306a Alpine \u30a4\u30e1\u30fc\u30b8\u306b\u30b3\u30d4\u30fc\u3059\u308b\u3068\u3044\u3046\u300cDocker \u306e\u30de\u30eb\u30c1\u30b9\u30c6\u30fc\u30b8\u30d3\u30eb\u30c9\u300d\u306e\u624b\u6cd5\u3092\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u4fbf\u5229\u306a\u3053\u3068\u306b\u3001\u30b5\u30a4\u30ba\u306f\u3044\u3055\u3055\u304b\u5927\u304d\u3044\u306e\u3067\u3059\u304c\u300crust-musl-builder\u300d\u3068\u3044\u3046 Rust \u306e\u958b\u767a\u306b\u5fc5\u8981\u306a\u3082\u306e\u304c\u63c3\u3063\u3066\u3044\u308b Docker \u306e\u30a4\u30e1\u30fc\u30b8\u3092 DockerHub \u306b\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u65b9\u304c\u3044\u3089\u3063\u3057\u3083\u3063\u305f\u306e\u3067\u3001\u305d\u3061\u3089\u3092\u4f7f\u308f\u305b\u3066\u3044\u305f\u3060\u304f\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>rust-musl-builder<br \/>\nDocker images for compiling static Rust binaries using musl-libc and musl-gcc, with static versions of useful C libraries. Supports openssl and diesel crates.<\/p>\n<p>GitHub: emk\/rust-musl-builder<\/p>\n<p>DockerHub: ekidd\/rust-musl-builder<\/p>\n<p>\u53c2\u8003\u6587\u732e<\/p>\n<p>\u300cAlpine\u3067Rust\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u52d5\u304b\u3059\u300d@ etogen\u306e\u30d6\u30ed\u30b0<br \/>\n\u300cglibc-\u3068-musl | Rust \u3067\u30af\u30ed\u30b9\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066 Raspberry Pi Zero W \u3067\u52d5\u304b\u3059\u300d @ Qiita<br \/>\n\u300cMulti-stage build\u3067Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30b5\u30a4\u30ba\u3092\u6700\u9069\u5316\u300d@ Qiita<\/p>\n<p>\u3010Intel \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068\u306f\u3011 Intel \u30c1\u30c3\u30d7\u3092\u524d\u63d0\u306b\u8a2d\u8a08\u3055\u308c\u305f\u30d7\u30e9\u30c3\u30c8\u30db\u30fc\u30e0\u306e\u3053\u3068\u3067\u3059\u3002\u300cIntel \u5165\u3063\u3066\u308b\u300d\u3068\u307b\u307c\u540c\u7fa9\u3067\u3059\u3002Intel \u4ee5\u5916\u306b\u3082 AMD64\u3001ARMv6\u3001ARMv7\u3001IBM POWER\u3001PowerPC64 \u306a\u3069\u3001\u305f\u304f\u3055\u3093\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059\u3002\u30d0\u30a4\u30ca\u30ea\uff08\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff09\u306f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u5408\u308f\u305b\u3066\u4f5c\u6210\u3055\u308c\u308b\u305f\u3081\u3001\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068\u30ab\u30fc\u30cd\u30eb\u306e\u7a2e\u985e\u304c\u7570\u306a\u308b\u30d7\u30e9\u30c3\u30c8\u30db\u30fc\u30e0\u3067\u306f\u30d0\u30a4\u30ca\u30ea\u306f\u52d5\u304d\u307e\u305b\u3093\u3002Intel \u3068 AMD \u306f\u4e92\u63db\u304c\u591a\u3044\u30c1\u30c3\u30d7\u3067\u3042\u308b\u305f\u3081\u3001\u3069\u3061\u3089\u3067\u3082\u52d5\u304f\u5834\u5408\u306f x86_64 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068\u547c\u3070\u308c\u307e\u3059\u304c\u3001\u5168\u3066\u306e\u30d0\u30a4\u30ca\u30ea\u304c\u52d5\u304f\u3068\u3044\u3046\u4fdd\u8a3c\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u7279\u306b\u30c1\u30c3\u30d7\u306e\u6027\u80fd\u3092\u30d5\u30eb\u306b\u6d3b\u7528\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5229\u7528\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5834\u5408\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\uff08\u6a5f\u68b0\u5b66\u7fd2\u7cfb\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306a\u3069\uff09\u3053\u306e\u3053\u3068\u306f Docker \u3067\u3082\u91cd\u8981\u3067\u3001Docker Hub \u306a\u3069\u304b\u3089 docker pull \u30b3\u30de\u30f3\u30c9\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u308b\u30d3\u30eb\u30c9\u6e08\u307f\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30d3\u30eb\u30c9\u6642\u3068\u540c\u3058\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306a\u3044\u3068\u4f7f\u3048\u307e\u305b\u3093\u3002DockerHub \u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30ab\u30fc\u30cd\u30eb\u306e\u307b\u3068\u3093\u3069\u304c Linux \u3067\u3042\u308b\u3082\u306e\u306e\u3001\u4f8b\u3048\u3070 RaspberryPi Zero\uff08ARMv6l\uff09\u7528\u306e Docker \u30a4\u30e1\u30fc\u30b8\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001Dockerfile \u304a\u3088\u3073\u95a2\u9023\u3059\u308b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066 docker build \u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6642\u3001\u6ce8\u610f\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u306e\u304c\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30a4\u30e1\u30fc\u30b8\uff08Dockerfile \u306e FROM \u306e\u5024\uff09\u3082\u540c\u3058\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u3082\u306e\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002Dockerfile \u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u30d9\u30fc\u30b9\u30fb\u30a4\u30e1\u30fc\u30b8\u304c\u5bfe\u5fdc\u3059\u308b\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u304b Docker Hub \u3067\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u00a0\u21a9<\/p>\n<p>\u3010ripgrep \u5bfe\u5fdc\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u4e00\u89a7\u3011 https:\/\/repology.org\/metapackage\/ripgrep\/versions\u00a0\u21a9<\/p>\n<p>2019\/02\/\uff10\uff15 \u73fe\u5728 PullRequest #1250 @ GitHub\u00a0\u21a9<\/p>\n<p>\u300cAlpine\u3067Rust\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u52d5\u304b\u3059\u300d@ etogen\u306e\u30d6\u30ed\u30b0\u00a0\u21a9<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300cRipGrep\u300d\uff08rg\uff09\u3092 Alpine \u306e Docker \u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u304b\u3059 RipGrep \u5165\u308a\u306e Alp [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45642","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u300cRipGrep\u300d\uff08rg\uff09\u3092 Alpine \u306e Docker \u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u304b\u3059 RipGrep \u5165\u308a\u306e Alp [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-06T08:02:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T16:31:38+00:00\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-09-06T08:02:42+00:00\",\"dateModified\":\"2024-04-29T16:31:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u300cRipGrep\u300d\uff08rg\uff09\u3092 Alpine \u306e Docker \u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u304b\u3059 RipGrep \u5165\u308a\u306e Alp [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-09-06T08:02:42+00:00","article_modified_time":"2024-04-29T16:31:38+00:00","author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-09-06T08:02:42+00:00","dateModified":"2024-04-29T16:31:38+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45642-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45642"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45642\/revisions"}],"predecessor-version":[{"id":88587,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45642\/revisions\/88587"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}