用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
准备各种文件
我创建了以下三个文件。
虽然也考虑了一下不分开创建,但最后还是放着不管了。。。
-
- Docker档案
-
- 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
请参考