1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerのOSをAlpine 3.14以上にしてCI/CDツールでビルドしたら「/bin/sh: Operation not permitted」エラーが出た

Last updated at Posted at 2024-04-24

はじめに

DockerのOSをAlpine 3.13から3.19に上げたところ、CI/CDツールのCodeBuildやCircleCIのビルドで「/bin/sh: Operation not permitted」というエラーが出ました。
調べてみると、Alpine 3.14以降で仕様が変わっていて、ビルドに使われるDockerのバージョンが古いとエラーになるようです。

この記事では今回の対応でやったことについて備忘録的に残したいと思います。

やったこと

CodeBuildの場合

現在の仕様では、Dockerのバージョン指定は不要なため、
buildspec.ymlのruntime-versionsからDockerのバージョン指定を除外しました。

buildspec.yml
version: 0.2

phases:
-  install:
-    runtime-versions:
-      docker: 18

次に、CodeBuildのビルドプロジェクトの環境設定からビルドイメージを
aws/codebuild/amazonlinux2-x86_64-standard:1.0から
aws/codebuild/amazonlinux2-x86_64-standard:5.0へ更新しました。

CloudFormationで定義している場合は以下のようになるかと思います。

  CodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: CodeBuildProject
      ServiceRole: !Ref BuildRole
      Artifacts:
        Type: CODEPIPELINE
      Environment:
        Type: LINUX_CONTAINER
        ComputeType: BUILD_GENERAL1_MEDIUM
-        Image: aws/codebuild/amazonlinux2-x86_64-standard:1.0
+        Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0
        PrivilegedMode: true

以上でCodeBuildでの対応は完了です。

CircleCIの場合

CircleCIの設定ファイルで setup_remote_dockerのバージョン指定をdefaultにします。
この設定を行うとビルドで使われるDockerのイメージが最新に保たれます。

config.yml
steps:
     - setup_remote_docker:
-          version: 17.11.0-ce
+          version: default

以上でCircleCIでの対応は完了です。

さいごに

誰かのお役に立てれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?