inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

안녕하세요. 소스 문의입니다~

해결됨

Flutter로 웹 서비스 개발하기 (1) - Responsive Web

강의를 들었는데... github소스라든지 그런게 안보이든데... 결제했는 사람조차도 소스 제공이 안되나용? 답변 부탁드립니당~

  • flutter
  • aws
  • 반응형-웹
  • dart
little face 댓글 2 좋아요 0 조회수 253

26강 update method 에러 발생합니다

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

선생님이 해주신것과 똑같이 코드를 작성했는데 도서관리에서 사용자 이름을 수정하려고 하니 updateUser에서 optional 관련 에러가 발생합니다. Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.name as name3_0_0_ from user user0_ where user0_.id=? 2024-08-14 18:42:17.084 ERROR 37216 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException] with root cause java.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] at com.group.libraryapp.service.user.UserServiceV2.updateUser(UserServiceV2.java:34) ~[main/:na] at com.group.libraryapp.controller.user.UserController.updateUser(UserController.java:32) ~[main/:na] db도 한번 삭제 후 다시 실행했는데 같은 에러가 발생하네요.. 이유와 해결방법이 궁금합니다..!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
조하영 댓글 3 좋아요 0 조회수 218

targetgroup

해결됨

스스로 구축하는 AWS 클라우드 네트워크 - 기본편

로드밸런스 타겟그룹을 만들때 이런 에러가 뜨는데 레퍼런스를 찾아봐도 잘 없네요.. 시간이 안맞는거 같은데 이건 어느 부분을 봐야할까요??

  • 네트워크
  • aws
wnsqud70 댓글 2 좋아요 0 조회수 211

인스턴스 타겟그룹 등록 언헬시

미해결

AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법

인스턴스 만들때 라우팅 테이블 어떻게 설정 되어 있나요 nat랑 연결되어있나요?

  • aws
  • docker
  • msa
  • container
  • ecs
  • fargate
댓글 2 좋아요 0 조회수 207

도애체 어디에서 오류가 난건지 모르겠습니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

다음과 같이 코드를 했는데 24강까지 애플리케이션에서 잘 삭제되고, 잘 저장되었는데 25강이후 코드는 실행되는데 '나이'가 입력을 해도 00세로 나오고, 목록에서 삭제하려고하면 '서버내부 오류입니다'라고 뜹니다. 아래 질문에서 쉬운거는 편집된게 있다고 하는데 배우는단계에 있는 사람으로써는 그렇게 편집되면 많이 당황스럽네요...ㅜㅜㅜㅜㅜ 어디서 틀렸나요?ㅜㅜ UserResponse package com.group.libraryapp.dto.user.response; import com.group.libraryapp.domain.user.User; public class UserResponse { private long id; private String name; private Integer age; public UserResponse(long id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public UserResponse(User user) { this.id = user.getId(); this.name = user.getName(); } public UserResponse(long id, User user) { this.id = id; this.name = user.getName(); this.age = user.getAge(); } public long getId() { return id; } public String getName() { return name; } public Integer getAge() { return age; } } User package com.group.libraryapp.domain.user; import javax.persistence.*; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id = null; @Column(nullable = false, length = 20, name = "name") private String name; private Integer age; protected User() { } public User(String name, Integer age) { if (name == null || name.isBlank()) { throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.",name)); } this.name = name; this.age = age; } public String getName() { return name; } public Integer getAge() { return age; } //User class public Long getId() { return id; } public void updateName(String name) { this.name = name; } } UserRepository package com.group.libraryapp.domain.user; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { User findByName(String name); } UserController package com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import com.group.libraryapp.service.user.UserServiceV2; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController public class UserController { private final UserServiceV2 userServiceV2; public UserController(UserServiceV2 UserServiceV2) { this.userServiceV2 = UserServiceV2; } @PostMapping("/user") public void saveUser(@RequestBody UserCreateRequest request) { userServiceV2.saveUser(request); } @GetMapping("/user") public List<UserResponse> getUsers() { return userServiceV2.getUsers(); } @PutMapping("/user") public void updateUser (@RequestBody UserUpdateRequest request) { userServiceV2.updateUser(request); } @DeleteMapping("/user") public void deldteUser (@RequestParam String name) { userServiceV2.deleteUser(name); } } UserServiceV2 package com.group.libraryapp.service.user; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.domain.user.UserRepository; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Service public class UserServiceV2 { private final UserRepository userRepository; public UserServiceV2(UserRepository userRepository) { this.userRepository = userRepository; } public void saveUser(UserCreateRequest request) { User u = userRepository.save(new User(request.getName(), request.getAge())); //System.out.println(u.getId()); } public List<UserResponse> getUsers() { return userRepository.findAll().stream() .map(UserResponse::new) .collect(Collectors.toList()); } public void updateUser(UserUpdateRequest request) { User user = userRepository.findById(request.getId()) .orElseThrow(IllegalArgumentException::new); user.updateName((request.getName())); userRepository.save(user); } public void deleteUser(String name) { User user = userRepository.findByName(name); if (user == null) { throw new IllegalArgumentException(); } userRepository.delete(user); } } UserCreateRequest package com.group.libraryapp.dto.user.request; public class UserCreateRequest { private String name; private Integer age; public String getName() { return name; } public Integer getAge() { return age; } }

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
우잉 댓글 2 좋아요 0 조회수 295

IP Field와 AccessLog 관련

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Q1 7-01 02 강의에서 ipv4address custom field를 생성하셨는데요 8-20 강의 같이 이후에는 그냥 Django GenericIPAddressField를 사용셨습니다. 7-01 02강의는 그냥 custom 필드를 보여주기 위한 예시이고 그냥 장고에서 제공해주는 IP 필드를 사용하면 되는건가요? 아니면 차이점이 존재하는 건가요? Q2 제가 제작한 사이트의 사용량 집계를 위해 로그를 얻으려고 합니다. class AccessLog(models.Model): request = models.URLField() time = models.DateTimeField(auto_now=True) user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) ip = models.GenericIPAddressField() 상기와 같은 모델을 작성하여 request가 client로 날라올 때마다 db에 쌓아나가는게 맞을까요? 아니라면 logger를 이용하는게 맞을까요?

  • react
  • python
  • django
  • web-api
  • htmx
pplkjh2 댓글 1 좋아요 0 조회수 142

early_stopping_rounds,eval_metric 오류 관련 질문있습니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

분류 강의 위스콘신 유방암 예측 실습강의 코드입니다. from xgboost import XGBClassifier xgb_wrapper = XGBClassifier(n_estimators=400, learning_rate=0.05, max_depth=3) evals = [(X_tr, y_tr), (X_val, y_val)] xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds=50, eval_metric="logloss", eval_set=evals, verbose=True) ws50_preds = xgb_wrapper.predict(X_test) ws50_pred_proba = xgb_wrapper.predict_proba(X_test)[:, 1] --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[36], line 5 3 xgb_wrapper = XGBClassifier(n_estimators=400, learning_rate=0.05, max_depth=3) 4 evals = [(X_tr, y_tr), (X_val, y_val)] ----> 5 xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds=50, eval_metric="logloss", 6 eval_set=evals, verbose=True) 8 ws50_preds = xgb_wrapper.predict(X_test) 9 ws50_pred_proba = xgb_wrapper.predict_proba(X_test)[:, 1] File ~\anaconda3\Lib\site-packages\xgboost\core.py:726, in require_keyword_args.<locals>.throw_if.<locals>.inner_f(*args, **kwargs) 724 for k, arg in zip(sig.parameters, args): 725 kwargs[k] = arg --> 726 return func(**kwargs) TypeError: XGBClassifier.fit() got an unexpected keyword argument 'early_stopping_rounds' 위 코드를 입력하였을때 이러한 오류가 뜨는데 무엇이 원인인지 잘모르겠습니다. Xgboost 버전은 2.1.0이고 파이썬버전같은경우는 3.1.1입니다. 아래는 인터넷에 검색하여 찾아낸 방법으로 입력한 코드입니다 from xgboost import XGBClassifier xgb_wrapper=XGBClassifier(n_estimators=400,learning_rate=0.05,max_depth=3,early_stopping_rounds=50,eval_metric="logloss") evals=[(X_tr,y_tr),(X_val,y_val)] xgb_wrapper.fit(X_tr,y_tr, eval_set=evals,verbose=True) ws50_preds=xgb_wrapper.predict(X_test) ws50_pred_proba=xgb_wrapper.predict_proba(X_test)[:,1] 아래는 위 코드에 대한 결과값입니다. 오차 행렬 [[35 2] [ 2 75]] 정확도: 0.9649, 정밀도: 0.9740, 재현율: 0.9740, F1: 0.9740, AUC:0.9961 아래는 책에 있는 코드를 입력하였을때의 결과값입니다. 오차 행렬 [[35 3] [ 2 75]] 정확도: 0.9561, 정밀도: 0.9615, 재현율: 0.9740, F1: 0.9677, AUC:0.9933 제 생각에는 버전차이에 따른 문제같은데 수정된 코드를 사용하였을때 결과값은 도출되지만 기존 강의에서 사용하신 코드의 결과값과는 다릅니다. 수정된 코드를 그대로 사용하는게 맞을지 아니면 다른 방법이 있는지 궁금합니다.

  • python
  • 머신러닝
  • 통계
김정구 댓글 1 좋아요 0 조회수 1478

배열길이 부분에 질문있어요

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

8:29초 부분입니다. b=a[:3] 이면 배열주소 0123을 출력하는게 아니라 3까지(012) 라고 봐야하는건가요? c=a[4:6]도 마찬가지로 45까지만 출력하는건가요?

  • python
  • java
  • c
  • 정보처리기사
주서 댓글 1 좋아요 0 조회수 220

djlint 편집시 무한 동작

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

사진과 같이 편집할 때 마다 djlint가 계속 검사합니다ㅠㅠ black은 처음엔 그러다가 자동 저장 설정 변경한 뒤부터 안 그러는데 djlint의 경우는 자동저장을 바꾸고 감시기 설정 체크 모두 해제해도 1바이트의 글자만 입력해도 자동 감시를 시작하는군요ㅠㅠ 혹시 아시는 바가 있을까요... 지피티가 해결을 못 해주어서 1시간이 넘게 고생하는 중입니다ㅠㅠ...

  • python
  • django
KANG HOJUN 댓글 1 좋아요 0 조회수 150

04-02-graphql-mutation

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

api 요청하기를 눌러도 콘솔창에 아무것도 안떠요

  • react
  • node.js
  • seo
  • graphql
  • next.js
imhj11777 댓글 2 좋아요 0 조회수 146

Supabase Storage .emptyFolderPlaceholder 이슈 (슬랙)

해결됨

[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)

https://github.com/supabase/storage/issues/207 모든 파일을 제거했을 때 갑자기 .emptyFolderPlaceholder가 파일 리스트에 나오는 문제입니다. 슬랙에 올라온 질문인데 같은 이슈를 겪는 분들이 종종 계실 것 같아 인프런 커뮤니티에도 해결책을 공유드립니다.

  • firebase
  • next.js
  • tailwind-css
  • react-query
  • supabase
로펀 댓글 1 좋아요 0 조회수 187

react-query 무한스크롤 staleTime caching 질문 (슬랙)

해결됨

[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)

Slack에 올라온 질문이 좋아서 인프런 커뮤니티에도 공유드립니다.

  • firebase
  • next.js
  • tailwind-css
  • react-query
  • supabase
  • staletime
  • cache
로펀 댓글 1 좋아요 1 조회수 177

sg

해결됨

스스로 구축하는 AWS 클라우드 네트워크 - 기본편

안녕하세요 강의 잘 보고 있습니다 선생님이 실습하신것 처럼 sg 인바운드 80열고 아웃바운드는 디폴트 nacl도 디폴트 그대로 사용하고 있는데(all port range) 웹으로 public ip를 접속하면 접속이 되지 않는데.. 체크해야될 부분이 또 있을까요??

  • 네트워크
  • aws
wnsqud70 댓글 1 좋아요 0 조회수 180

2장 클론 코딩시 화면 하단에 회색 영역이 생김니다.

미해결

Next + React Query로 SNS 서비스 만들기

강좌와 git을 보면서 했는데, 왜 아래에 회색영역이 생기는 건지 잘 모르겠습니다.ㅜㅜ 세로로 생기는 스크롤도 흰색영역에만 생깁니다. 그런데 로그아웃버튼은 회색영역에 생기네요 이리저리 해봐도 잘 모르겠어서 도움을 요청합니다

  • react
  • next.js
  • react-query
  • next-auth
  • msw
슈퍼아스라다 댓글 1 좋아요 0 조회수 147

역할과 정책에 관한 질문

해결됨

비전공자도 이해할 수 있는 CI/CD 입문·실전

IAM 설정을 처음해보면서 역할과 정책에 대한 개념이 아직 제대로 이해되지 않은거 같아 질문드립니다. '다른 AWS 리소스에 접근하기 위해선 역할이나 사용자를 생성해 그 안에서 정책을 연결해서 권한을 부여해야한다.' 이렇게 이해했는데 맞을까요? ec2에서는 역할을 만들때 정책을 생성했는데 CodeDeploy에서는 정책을 설정하지 않아도 되는 이유가 궁금합니다. EC2 인스턴스는 역할 연결을 통해, github actions는 엑세스 키를 통해 권한을 부여받는다고 이해했는데 맞을까요?

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
yso829612 댓글 1 좋아요 0 조회수 228

서로 다른 컴포넌트간 query 일치하게 하기 강의중

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세여 제로초님 UserInfo에서 팔로우버튼을 누르면 팔로잉으로 변해야되고 다시 한번 누르면 팔로우로 변해야되는데 버튼을 누르고 새로고침을 해야지만 반영이됩니다... 팔로우 추천에서는 바로 반영이 되는데.... 깃허브 ch3-2 UserInfo에 있는 코드로 가져다 써도 안되네여 ㅠㅠ "use client"; import style from "@/app/(afterLogin)/[username]/profile.module.css"; import BackButton from "@/app/(afterLogin)/_component/BackButton"; import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query"; import { User } from "@/model/User"; import { getUser } from "@/app/(afterLogin)/[username]/_lib/getUser"; import cx from "classnames"; import { MouseEventHandler } from "react"; import { Session } from "@auth/core/types"; type Props = { username: string; session: Session | null; }; export default function UserInfo({ username, session }: Props) { const { data: user, error } = useQuery< User, Object, User, [_1: string, _2: string] >({ queryKey: ["users", username], queryFn: getUser, staleTime: 60 * 1000, // fresh -> stale, 5분이라는 기준 gcTime: 300 * 1000, }); const queryClient = useQueryClient(); const follow = useMutation({ mutationFn: (userId: string) => { console.log("follow", userId); return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { credentials: "include", method: "post", } ); }, onMutate(userId: string) { const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); if (index > -1) { console.log(value, userId, index); const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.email as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow: User = { ...value2, Followers: [{ id: session?.user?.email as string }], _count: { ...value2._count, Followers: value2._count?.Followers + 1, }, }; queryClient.setQueryData(["users", userId], shallow); } }, onError(error, userId: string) { console.error(error); const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: shallow[index].Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: value2.Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...value2._count, Followers: value2._count?.Followers - 1, }, }; queryClient.setQueryData(["users", userId], shallow); } } }, }); const unfollow = useMutation({ mutationFn: (userId: string) => { console.log("unfollow", userId); return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { credentials: "include", method: "delete", } ); }, onMutate(userId: string) { const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: shallow[index].Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: value2.Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...value2._count, Followers: value2._count?.Followers - 1, }, }; queryClient.setQueryData(["users", userId], shallow); } } }, onError(error, userId: string) { console.error(error); const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.email as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: [{ userId: session?.user?.email as string }], _count: { ...value2._count, Followers: value2._count?.Followers + 1, }, }; queryClient.setQueryData(["users", userId], shallow); } }, }); console.log("error"); console.dir(error); if (error) { return ( <> <div className={style.header}> <BackButton /> <h3 className={style.headerTitle}>프로필</h3> </div> <div className={style.userZone}> <div className={style.userImage}></div> <div className={style.userName}> <div>@{username}</div> </div> </div> <div style={{ height: 100, alignItems: "center", fontSize: 31, fontWeight: "bold", justifyContent: "center", display: "flex", }} > 계정이 존재하지 않음 </div> </> ); } if (!user) { return null; } const followed = user.Followers?.find((v) => v.id === session?.user?.email); console.log(session?.user?.email, followed); const onFollow: MouseEventHandler<HTMLButtonElement> = (e) => { e.stopPropagation(); e.preventDefault(); console.log("follow", followed, user.id); if (followed) { unfollow.mutate(user.id); } else { follow.mutate(user.id); } }; return ( <> <div className={style.header}> <BackButton /> <h3 className={style.headerTitle}>{user.nickname}</h3> </div> <div className={style.userZone}> <div className={style.userRow}> <div className={style.userImage}> <img src={user.image} alt={user.id} /> </div> <div className={style.userName}> <div>{user.nickname}</div> <div>@{user.id}</div> </div> {user.id !== session?.user?.email && ( <button onClick={onFollow} className={cx(style.followButton, followed && style.followed)} > {followed ? "팔로잉" : "팔로우"} </button> )} </div> <div className={style.userFollower}> <div>{user._count.Followers} 팔로워</div> &nbsp; <div>{user._count.Followings} 팔로우 중</div> </div> </div> </> ); } 제가 보기에는 useQuery가 제대로 작동안하는거같은데...제로초님 의견이 궁금합니다 팔로우버튼 안눌렀을때 팔로우버튼 눌렀을때

  • react
  • next.js
  • react-query
  • next-auth
  • msw
장산 댓글 2 좋아요 0 조회수 235

수업 때 쓰셨던 txt file 공유 해주시면 좋겠습니다

해결됨

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

나라 이름, 도시 같은 것들은 영상 아래 강의 노트에서 복붙할 수 있으면 좋겠네요 원활한 답변을 위해, 자세한 질문 사항 부탁드려요 :D

  • python
  • 알고리즘
minsu2587 댓글 1 좋아요 1 조회수 189

도커 이미지 푸시까지는 성공하나, ssh에서 fail이 나옵니다.

해결됨

비전공자도 이해할 수 있는 CI/CD 입문·실전

강의 및 노션에 있는 부분을 최대한 응용해서, next.js app을 생성중입니다. ecr 저장소에서 도커 이미지가 확실히 푸시되었지만, ssh접속에서 에러가 발생했습니다. ======CMD====== docker stop instagram-server || true docker rm instagram-server || true docker pull 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest docker run -d --name instagram-server -p 3000:3000 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest ======END====== err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server/stop": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Delete "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/images/create?fromImage=767398114270.dkr.ecr.ap-northeast-2.amazonaws.com%2Finstagram-server&tag=latest": dial unix /var/run/docker.sock: connect: permission denied 2024/08/13 11:11:21 Process exited with status 1 그래서 workflow를 수정했는데, 밑에 처럼 진행하니 정상처리가 되었습니다. - name: SSH로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # 인스턴스의 퍼블릭 IP 또는 DNS 이름 username: ${{ secrets.EC2_USERNAME }} # 일반적으로 'ubuntu' 또는 'ec2-user' key: ${{ secrets.EC2_PRIVATE_KEY }} # SSH 개인 키 script_stop: true script: | aws ecr get-login-password --region ap-northeast-2 | sudo docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }} sudo docker stop instagram-server || true sudo docker rm instagram-server || true sudo docker pull ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest sudo docker run -d --name instagram-server -p 3000:3000 ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest 혹시 제가 실수하거나 놓친 부분이있을까요??

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
두뇌풀가동 댓글 1 좋아요 0 조회수 233

그리고 또 다른 질문~

해결됨

Flutter로 웹 서비스 개발하기 (1) - Responsive Web

이후의 강의 일정은 언제쯤 잡고 계신가요? 플러터에서의 SEO강의 너무 듣고 싶어요.. ㅎㅎㅎ

  • flutter
  • aws
  • 반응형-웹
  • dart
little face 댓글 1 좋아요 0 조회수 171

인기 태그

인프런 TOP Writers

주간 인기글