用Golang + aws cli + aws sam cli搭建了一个DevContainer

首先

我想要做的原因

 

我正在观看这个Udemy课程,其中有一个部分是关于安装Golang、aws cli和aws sam cli。
课程中为了简化操作,使用homebrew在本地环境中进行了安装,但是我不想弄乱自己的环境,所以尝试构建成DevContainer来使用。

我对Golang、AWS和容器都是初学者。
所提供的信息没有任何保证,也不是最佳实践。
如果有任何问题,请在评论中告诉我,我将不胜感激。

环境

    • macOS 13.6

 

    • Docker 24.0.2-rd

 

    VSCode 1.82.2

准备各种文件

我创建了以下三个文件。
虽然也考虑了一下不分开创建,但最后还是放着不管了。。。

    1. Docker档案

 

    1. docker-compose配置文件

 

    开发容器配置文件

.devcontainer/Dockerfile 的翻译如下:

.docker容器文件/Dockerfile

    • Golangイメージで下記cliを使えるようにしたコンテナを作成する

aws cli
aws sam cli

FROM golang:1.21-bullseye

# Clean up old resources
RUN rm -Rf /workspace/aws 

RUN mkdir -p /workspace/aws
WORKDIR /workspace/aws

# Install dependencies
RUN apt-get update -y && apt-get install -y zip unzip sudo pip

# Install aws cli
# See https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN sudo ./aws/install --update

# Install aws sam cli
# See https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html
RUN pip install --upgrade aws-sam-cli

docker-compose.yml 的中文释义是什么?

    bindするvolumeを指定
version: '3'
services:
  golang:
    build: .
    image: golang-and-aws-cli
    container_name: 'golang-bitcoin-lambda'
    ports:
      - 8080:80
    volumes:
      - type: bind
        source: '..'
        target: '/workspace/app'
      # 認証情報をバインドしておく
      # See https://qiita.com/yh1224/items/80a652562291cf37c718
      - type: bind
        source: '~/.aws'
        target: '/root/.aws'
        read_only: true
    tty: true
    restart: always
    # enable the tini init process to handle signals and clean up Zombie processes if you do not have an alternative set up
    # See https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/docs/docker-in-docker.md#feature-use
    init: true

devcontainer.json 文件

{
  "dockerComposeFile": "docker-compose.yml",
  "service": "golang",
  "workspaceFolder": "/workspace/app",
  "features": {
    "docker-in-docker": {
      "version": "latest"
    }
  },
  "customizations": {
    "vscode": {
      "extensions": ["golang.go", "amazonwebservices.aws-toolkit-vscode"]
    }
  }
}

尝试在VSCode中建立开发容器

必要的东西都准备好了,是吧?

root:/workspace/app# go version
go version go1.21.1 linux/arm64

root:/workspace/app# aws --version
aws-cli/2.13.22 Python/3.11.5 Linux/6.1.30-0-virt exe/aarch64.debian.11 prompt/off

root:/workspace/app# sam --version
SAM CLI, version 1.97.0

root:/workspace/app# docker --version
Docker version 23.0.6+azure-2, build ef23cbc4315ae76c744e02d687c09548ede461bd

请参考

 

广告
将在 10 秒后关闭
bannerAds