Docker 멀티 CPU 아키텍처에서 Fargate Gravviton2 시도
6787 단어 AWSECSAWS FargateGraviton2tech
골랑과 루스트처럼 원래 교차 번역이 가능한 언어는 그거니까 rails로 시도해 보세요.
아무거나 rails new.
rails new \
--skip-action-mailer \
... 中略 ...
--skip-webpack-install \
rails-multi-cpu
cd rails-multi-cpu
Gemfile의 루비 버전 지정 및 웹 패키지 미리 삭제config.hosts.clear
추가하지 않으면 ALB의 호스트 이름을 액세스할 수 없기 때문에 넣습니다.config/environments/development.rb
Rails.application.configure do
config.hosts.clear
DockerfileFROM ruby:3.0.2 as builder
ENV RAILS_ENV=development
WORKDIR /app
COPY Gemfile* /app/
RUN bundle install
FROM ruby:3.0.2-slim
ENV \
RAILS_ENV=development \
RAILS_LOG_TO_STDOUT=1 \
RAILS_SERVE_STATIC_FILES=1
WORKDIR /app
CMD ["bundle", "exec", "rails", "s", "-b", "0.0.0.0"]
COPY /usr/local/bundle /usr/local/bundle
COPY . /app
RUN bundle install && mkdir -p tmp/pids
일단 움직이면 돼요.먼저 로컬에서 구축하고 실행하며 오류가 발생하면 조정합니다
docker build -t rails-multi-cpu .
docker run -it --rm rails-multi-cpu
혼자 해볼 때 마스터를 써요.열쇠 같은 거 없어요.버블이 생겨서 그런 실수는 없지만 할애는이벤트 상태 중 ECR 창고를 제작하여 로그인
export AWS_ACCSESS_KEY_ID=xxxxx
export AWS_SECRET_ACCSESS_KEY=xxxxx
ECR_REPO_URI=$( \
aws ecr create-repository --repository-name rails-multi-cpu \
--query repository.repositoryUri --output text \
)
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin ${ECR_REPO_URI}
buildx 명령으로 이미지를 구축하여 ECR에 직접push# builder インスタンスを作成 (作成しないとエラーになる)
docker buildx create --use --name multi-platform
# build & push
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ${ECR_REPO_URI}:latest \
--push .
구축 중입니다.이를 통해 알 수 있듯이 linux/amd64
와 linux/arm64
는 병행적으로 구축되었다.시간이 많이 걸립니다(Intel Mac로 18분 정도 소요).
파르게이트 제작에 사용하고 싶지만
copilot
다양한 대응이 없어 사용할 수 없어 번거롭지만 수작업으로 열심히 하겠습니다.추기:
v1.13.0의copilot-cli는 매우 간단하게 디자인했기 때문에 저것을 추천합니다.
다음 단계는 스스로 노력하는 상황이다.
우선 작업 정의 로그인입니다.cli보다 컨트롤러로 하는 게 편해요.
다음 화면에서
Linux/ARM64
를 선택합니다.그리고 VPC, ECS 서비스, ALB 등을 만들면 OK.길기 때문에 사랑을 끊는다.
ALB의 Public DNS에 액세스하는 경우 스키마는
aarch64-linux
입니다.감상
빌딩이 너무 오래 걸려요. (회사에서 지적했지만 H/W 가속기는 작동하지 않나요?)따라서arm64의 기계에 구축되지 않으면 실용적인 CI/CD가 될 수 없다.
copilot 같은 생태계로 간단하게 지정할 수 있었으면 좋겠어요.(현재로서는 taskdef overrides가 아니면 지정할 수 없습니다.)
추기
근데 이거 보면 코필로트도 할 수 있어.나중에 다시 시도하십시오.
참고 자료
Reference
이 문제에 관하여(Docker 멀티 CPU 아키텍처에서 Fargate Gravviton2 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sonodar/articles/2dea6193a4d290텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)