inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

gitleaks 시크릿 스캔의 기준에 대한 질문입니다.

미해결

[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기

1. 무엇을 하고 싶으신가요? gitleaks가 secret을 판별하는 기준에 대해서, 또 지금 현 상황에 대한 이유가 궁금합니다. 2. 언제, 어떤 오류가 발생하시나요? from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "AROAWU22AXDEPO3JX44FD" @app.route("/rextest") def rextest(): return "REXTEST_PATH" if __name__ == "__main__": app.run( host="0.0.0.0", port=8080, debug=True, ) app.py 코드를 위처럼 작성해서 MR을 날릴 경우, 파이프라인에서 gitleaks에 시크릿 값(AWS 예제)가 스캔되지 않습니다. 때문에 build job까지 문제 없이 실행이 됩니다. 3. 어떤 시도를 해보셨나요? 로컬 환경에서 강사님 코드를 pull 하고 tools 디렉토리의 gitleaks 디렉토리에서 gitleaks detect -v --no-git 명령을 수행해도 디스코드 예제와 깃랩 예제 2 종류만 스캔될 뿐 AWS 예제는 스캔되지 않습니다. 그래서 app.py 파일에 디스코드 예제를 넣어서 파이프라인을 실행할 경우, 정상적으로 gitleaks에서 시크릿이 스캔되어 job이 실패합니다. 이러한 경우, 코드 문제가 아니라 gitleaks에 대한 문제라고 생각이 드는데, 강의 영상에서는 AWS 예제가 스캔되어 job이 실패되고 저는 정상적으로 실행되는 이유가 궁금합니다. 4. 작성한 코드를 공유해주세요. stages: - gitleaks - build - deploy default: image: name: bentolor/docker-dind-awscli id_tokens: GITLAB_OIDC_TOKEN: aud: https://gitlab.com variables: AWS_DEFAULT_REGION: ap-northeast-2 IMAGE: ${CI_PROJECT_NAME}:latest REMOTE_LATEST_IMAGE: ${AWS_ECR_REPO_URL}:latest REMOTE_REGULAR_IMAGE: ${AWS_ECR_REPO_URL}:${CI_COMMIT_SHORT_SHA} .get_aws_role: &get_aws_role - > export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $(aws sts assume-role-with-web-identity --role-arn ${AWS_ROLE_ARN} --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}" --web-identity-token ${GITLAB_OIDC_TOKEN} --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text)) .get_ecr_token: &get_ecr_token - *get_aws_role - aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ${AWS_ECR_REPO_URL} gitleaks: stage: gitleaks image: name: zricethezav/gitleaks:latest entrypoint: [""] script: - gitleaks detect -v --no-git --redact --report-format json rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: paths: - app.py - Dockerfile - requirements.txt build-container-image: stage: build services: - name: docker:dind before_script: - *get_ecr_token script: - docker build -t ${IMAGE} . - docker tag ${IMAGE} ${REMOTE_LATEST_IMAGE} - docker push ${REMOTE_LATEST_IMAGE} - docker tag ${IMAGE} ${REMOTE_REGULAR_IMAGE} - docker push ${REMOTE_REGULAR_IMAGE} rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: paths: - app.py - Dockerfile - requirements.txt deploy: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest before_script: *get_aws_role variables: AWS_DEFAULT_REGION: ap-northeast-1 script: - | export SERVICE_NAME="${CI_PROJECT_NAME}-service" export AR_SERVICE_NAME=$(aws apprunner list-services --query "ServiceSummaryList[?ServiceName=='${SERVICE_NAME}'].ServiceName | [0]" --output text) # AppRunner에 해당 레포의 매핑되는 서비스가 없는 경우 if [ ${AR_SERVICE_NAME} != ${SERVICE_NAME} ]; then export AR_SERVICE_ARN=$(aws apprunner create-service --service-name "${SERVICE_NAME}" --source-configuration "{\"AuthenticationConfiguration\": {\"AccessRoleArn\": \"${AWS_APP_RUNNER_SERVICE_ROLE_ARN}\"}, \"ImageRepository\": {\"ImageIdentifier\": \"${REMOTE_LATEST_IMAGE}\", \"ImageRepositoryType\": \"ECR\"}}" --instance-configuration 'Cpu="0.25 vCPU",Memory="0.5 GB"' --output text --query "Service.ServiceArn") echo "[+] Creating ${AR_SERVICE_ARN}" # AppRunner 서비스가 존재하는 경우 else export AR_SERVICE_ARN=$(aws apprunner list-services --query "ServiceSummaryList[?ServiceName=='${SERVICE_NAME}'].ServiceArn | [0]" --output text) aws apprunner start-deployment --service-arn ${AR_SERVICE_ARN} echo "[+] Deploying ${AR_SERVICE_ARN}" fi export AR_SERVICE_STATUS=$(aws apprunner describe-service --service-arn ${AR_SERVICE_ARN} --output text --query "Service.Status") while [ ${AR_SERVICE_STATUS} != "RUNNING" ]; do echo "[*] Waiting..." sleep 10 export AR_SERVICE_STATUS=$(aws apprunner describe-service --service-arn ${AR_SERVICE_ARN} --output text --query "Service.Status") if [ ${AR_SERVICE_STATUS} = "CREATE_FAILED" ]; then echo "[-] ${AR_SERVICE_ARN} ${AR_SERVICE_STATUS}" exit 1 fi done echo "[+] ${AR_SERVICE_ARN} deployed!" rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH changes: paths: - app.py - Dockerfile - requirements.txt

  • aws
  • docker
  • ci/cd
  • Terraform
  • gitlab
  • devsecops
  • trivy
  • semgrep
  • gitleaks
taeho Kim 댓글 2 좋아요 1 조회수 101

18번 강의 듣는중에 문의드립니다.

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요. 강의 나름 열심히 듣고있는 수강생입니다..! 정환님 강의 React.js, typescript,다 수강하고 이어서 next.js 수강중입니다. 지금은 2.10) 사전 렌더링와 데이터페칭 보고있는데요. 리액트에서의 데이터 페칭 설명해주시면서 기억나시나요?? 물어보셨는데 혹시 정환님 React.js 강의에서 데이터페칭 설명해주신 부분이 있었나요?? ㅠㅠㅠ 제가 놓친건지.. 다시 찾아봐도 찾기가 힘들어서요.. 답변 부탁 드립니다.

  • react
  • typescript
  • next.js
열시미하겟슴다 댓글 3 좋아요 0 조회수 93

파일 업로드 에러

해결됨

메이드 인 RAG(로컬 LLM Q&A시스템) With Docker + ollama + R2R

강의 내용대로 설정하여 http://localhost:7273/documents 페이지에서 문서를 업로드하였는데, 아래와 같은 메시지가 표시되면서 업로드가 실패하였습니다. Upload Failed Status 500: An error "500: Error during ingestion: OpenAl credentials not configured but openai/ model prefix used' occurred during create_document 내용 확인 부탁드립니다. 감사합니다.

  • docker
  • 인공지능(ai)
  • wsl
  • llm
이성수 댓글 1 좋아요 0 조회수 117

Todo구현중 memo함수에 대해서

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

todo리스트 구현중 TodoItem.jsx에서 memo에 대해 강의를 보며 공부중입니다. 이렇게 console.log로 찍었는데 체크박스를 한 개만 찍어도 3가지 모두 다 console로 찍히는데 제대로 적용된 것 맞나요? 하이라이트를 켜도 색상이 비슷해서 구분이 잘 가지않습니다. 로그는 이렇게 찍힙니다. prev next = {"id":0,"isDone":false,"content":"React 공부하기","date":1764731042079}{"id":0,"isDone":true,"content":"React 공부하기","date":1764731042079} TodoItem.jsx?t=1764729548020:40 prev next = {"id":1,"isDone":false,"content":"빨래하기","date":1764731042079}{"id":1,"isDone":false,"content":"빨래하기","date":1764731042079} TodoItem.jsx?t=1764729548020:40 prev next = {"id":2,"isDone":false,"content":"노래 연습하기","date":1764731042079}{"id":2,"isDone":false,"content":"노래 연습하기","date":1764731042079} import { memo } from 'react'; import './TodoItem.css' function TodoItem({id, isDone, content, date, onUpdate, onDelete}) { const onChangeCheckbox = () => { onUpdate(id); } const onClickDeleteButton = () => { onDelete(id) } return ( <div className="TodoItem"> <input onChange={onChangeCheckbox} readOnly checked={isDone} type="checkbox"/> <div className="content">{content}</div> <div className="date">{new Date(date).toLocaleDateString()}</div> <button onClick={onClickDeleteButton}> 삭제 </button> </div> ); } export default memo(TodoItem, (prevProps, nextProps) => { console.log("prev next = " + JSON.stringify(prevProps) + JSON.stringify(nextProps)) if(prevProps.id !== nextProps.id) return false if(prevProps.isDone !== nextProps.isDone) return false if(prevProps.content !== nextProps.content) return false if(prevProps.date !== nextProps.date) return false return true });

  • javascript
  • react
  • node.js
  • 카카오공채-개발
최어진 댓글 2 좋아요 0 조회수 70

for, while문 작성

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 입문 > 반복문을 공부하고 있는 학생입니다. for, while문에 대해 1번 2번 문제와 풀이를 하는 중인데요, 답안을 보니 int num, int count라는 변수를 각각 사용했더라구요. 그런데 저는 num선언을 통해서만 작성했는데. 보통 반복문의 경우 count라는 변수를 별개로 선언하여 반복하는 횟수를 잡아 개발하는지 문의드립니다. 참고로 제가 작성한 코드는 아래와 같습니다. /* for(int count = 1; count<=10; count++){ System.out.println(count); } int count1 = 1; while (count1<=10){ System.out.println(count1); count1++; } */ int num = 2; while (num<=20){ System.out.println(num); num = num+2; } for(int num1=2; num1<=20; num1=num1+2){ System.out.println(num1); //num1++; }

  • java
  • 객체지향
민지 댓글 1 좋아요 0 조회수 93

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

미해결

실전! 스프링 데이터 JPA

@PrePersist 가 있는 메서드는 영속성 컨텍스트에 엔티티를 저장할때 즉, save()나 persist() 호출 시점에 호출되는것인가요? 아니면 flush()이후에 INSERT쿼리가 실행되기 직전에 호출되는것인가요? @PreUpdate 가 있는 메서드는 엔티티의 변경 감지가 일어나고 트랜잭션 커밋 또는 em.flush()시점에 UPDATE쿼리가 실행되는데, 이 UPDATE쿼리가 실행되기 직전에 호출되는것이 맞을까요?

  • java
  • spring
  • spring-boot
  • jpa
오리쉐리 댓글 2 좋아요 0 조회수 124

쿠버네티스 강의 언제 나오나요..

해결됨

개발자를 위한 쉬운 도커

11월 초에 나온다고 하셔서 기다리고 있습니다. 아직 완강하지 않았더라도 연재식으로라도 강의 올려주셨으면 좋겠어요

  • docker
  • 가상화
  • ci/cd
  • docker-compose
  • github-actions
  • docker-volume
  • docker-image
  • container
kkhs1kim 댓글 2 좋아요 2 조회수 159

docker image ls 실행 시 나오는 내용이 다릅니다

해결됨

비전공자도 이해할 수 있는 Docker 입문/실전

윈도우의 Powershell 관리자 모드에서 실행했습니다. 강의를 보기 전에 노션 학습 자료 먼저 예습하고 있었는데, docker image ls를 제가 실행해 보니 전혀 다른 내용으로 출력됩니다. 이건 운영체제 차이인가요 아니면 최근에 바뀐 건가요?

  • docker
  • docker-compose
  • docker-volume
  • docker-image
  • container
  • ecr
11 1 댓글 2 좋아요 0 조회수 123

33강 15분쯤 if분기점에서의 에러 문의 드립니다.

해결됨

수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화

if로 분기해서 데이터가 존재하지 않았을때 생성해서 넘어가는것은 에러 없이 진행되는데 존재 할때는 저렇게 str에러가 발생합니다. 에어 테이블에서 받아올때 문제가 발생하는것같은데 어떻게 해야 할지를 모르겠습니다.

  • docker
  • n8n
  • 인공지능(ai)
  • 프롬프트엔지니어링
  • ai-활용-(ax)
  • 카카오공채-개발
stylebygio 댓글 3 좋아요 0 조회수 72

주식거래와 같은 실시간 보장이 필요한 상황에서 SAGA 패턴 도입에 대한 문의

해결됨

카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴

안녕하세요! 과거에, MSA 학습용으로 모의 주식 투자 서비스(?)를 만들어본 사람입니다. 당시에, 주식 매수의 기능을, 2개의 service 로 운영했었고, 이때 각 요청의 순서는 이벤트 기반으로 처리하였습니다. client -> stock service -> kafka -> payment service(이벤트 구독) 이때, 특정 문제에 대한 트랜잭션 보장을, 보장 로직을 통해 구현하였었습니다. 이때, kafka pub/sub 이벤트를 동기적으로 처리되었는지 확인하도록 구성해놓았었습니다. 주식 거래와 같은 일관성이 매우 중요한 서비스에서 어떤 방향성이 더 올바른(?) 방향이라고 생각하고, 어떤 생각을 가지고 계신지 궁금합니다. 현재 생각으로는, 2pc 를 채택하는게 더 올바른 선택이었다고 생각이 듭니다.

  • java
  • spring
  • mysql
  • spring-boot
  • msa
BeakGwa 댓글 2 좋아요 0 조회수 123

Tailwind CSS IntelliSense 작동이 안되요...

미해결

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

안녕하세요 Tailwind CSS IntelliSense 작동이 안되서 그러는데 확인해 본 결과로 index.css에서 @import "tw-animate-css"; 이거와 @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; } } 이 코드가 들어가면 작동을 하지 않습니다 혹시 이게 왜 그럴까요...?

  • react
  • typescript
  • react-query
  • supabase
  • zustand
박 태영 댓글 2 좋아요 0 조회수 92

플러그인 질문

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

강사님이 사용하시는 코드에서 오류가 났을때 빨간문자로 보이는 도움말? 은 무슨 플러그인을 사용하시는건가요?

  • javascript
  • react
  • node.js
  • 카카오공채-개발
athena1998 댓글 2 좋아요 0 조회수 75

next.js 는 핸드북 없나요?

해결됨

한 입 크기로 잘라먹는 Next.js

next.js 는 핸드북 없나요?

  • react
  • typescript
  • next.js
  • 카카오공채-개발
dorasir 댓글 2 좋아요 0 조회수 90

메타데이터 관리

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 메타데이터쪽 update를 읽다가 이해가 안가는게 있는데 형이 update() 메서드는 매 트랜잭션의 커밋 직전에 호출된다. 단, 처리 도중 예외가 발생하여 트랜잭션이 롤백되는 경우에는 호출되지 않는다. 이는 실패한 처리 내용이 실행 정보에 반영되는 것을 방지한다. 라고 했는데 그러면 문제가 생겨서 update를 호출하지 않고 롤백이 됬다고 하면 open입장에서는 실패했는지 안했는지도 모르는거아니야? 실패를 해도 마지막으로 저장된 곳부터 다시 시작하니까 실패를 아예 저장을 안한다는거야? 재시작할때 메타테이블에서 execution값을 받아와서 괜찮은건가?

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
ABBCD 댓글 2 좋아요 1 조회수 95

0/3 nodes are available

미해결

대세는 쿠버네티스 (초급~중급편)

아래 내용으로 파일을 만들면 해당 에러가 나오고있습니다.. apiVersion: v1 kind: Pod metadata: name: pod-1 labels: app: pod spec: nodeSelector: kubernetes.io/hostname: k8s-node1 containers: - name: container image: kubetm/app ports: - containerPort: 8080 올려주신 링크에들어가서 똑같이 만들고 노드랑도 다 지우고 재설치 했는데 계속 같은 증상입니다..

  • docker
  • kubernetes
  • devops
  • container
ar 댓글 2 좋아요 1 조회수 78

고양이 이미지가 엑박이 뜨네요

미해결

만들면서 배우는 리액트 : 기초

API 스펙이 변경되었네요! 제보 감사합니다. https://github.com/milooy/cat-jjal-maker/blob/main/answers/29-useEffect.html#L48 위 코드를 참고해서 fetchCat 함수를 변경해주세요. 위 답변해주신대로 소스를 변경해도 고양이 이미지가 엑박으로 뜨질 않습니다.

  • javascript
  • react
gangsugi 댓글 1 좋아요 0 조회수 86

백)TODO관련

미해결

코드로 배우는 React 19 with 스프링부트 API서버

강의중에는 private long tno; private String title; private String content; private boolean complete; private LocalDate dueDate; 위와같은 설정인데, 왜 갑자기 private long tno; private String title; private String writer; private boolean complete; private LocalDate dueDate; 로 바뀌는 건가요? 이것에 대한 설명은 어디에 있는거죠? 몇강 몇분대에 있는지에 대해서 알려주시면 감사하겠습니다.

  • react
  • typescript
  • spring-boot
  • jpa
  • jwt
jhoh 댓글 2 좋아요 0 조회수 76

68강 ArrayEx6 클래스 질문

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 혹시 이 코드도 정답으로 인정되나요? package array.ex; import java.util.Scanner; public class ArrayEx6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int n = sc.nextInt(); System.out.println(n + "개의 정수를 입력하세요:"); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int i = 0; i < n; i++) { max = Math.max(max, arr[i]); min = Math.min(min, arr[i]); } System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } }

  • java
lgh8079 댓글 1 좋아요 0 조회수 88

Back-off restarting fail~~

미해결

대세는 쿠버네티스 (초급~중급편)

사진 보내 드린것처럼 파드를 만들면 해당 에러가 게속나오는데 이유가 뭘까요...

  • docker
  • kubernetes
  • devops
  • container
ar 댓글 4 좋아요 1 조회수 149

docker inspect 명령 결과에서 GraphDriver 항목을 찾을 수 없습니다.

미해결

도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!

안녕하세요. 강의 내용 알차게 잘 듣고 있습니다. 다만, 강사님과 같이 docker inspect nginx:1.28.0-alpine3.21-slim 명령을 실행했을 경우 GraphDrvier 항목을 찾을 수 없고 바로 RootFS 항목만 확인되어 질문 드립니다. root@vagrant:~# docker images i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA nginx:1.28.0-alpine3.21-slim ce2bd4775ed6 20.6MB 6.29MB root@vagrant:~# docker inspect nginx:1.28.0-alpine3.21-slim [ { "Id": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195", "RepoTags": [ "nginx:1.28.0-alpine3.21-slim" ], "RepoDigests": [ "nginx@sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195" ], "Comment": "buildkit.dockerfile.v0", "Created": "2025-08-13T16:03:17Z", "Config": { "ExposedPorts": { "80/tcp": {} }, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NGINX_VERSION=1.28.0", "PKG_RELEASE=1", "DYNPKG_RELEASE=1" ], "Entrypoint": [ "/docker-entrypoint.sh" ], "Cmd": [ "nginx", "-g", "daemon off;" ], "WorkingDir": "/", "Labels": { "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGQUIT" }, "Architecture": "arm64", "Variant": "v8", "Os": "linux", "Size": 5802435, "RootFS": { "Type": "layers", "Layers": [ "sha256:982780712fdf5e22c7ed01172785fd7059a9ec11cb375c7133dc5b06c24250ff", "sha256:0d43a52040463d2c8abf5dbcfdf7494c64098f7eab47f4499e759d796c66d90c", "sha256:b81791db8dfbab361faf2ce24c74cf8da607971931576b0ba83e2dc8755af4e8", "sha256:098b681d959ad46239860f217c74a463292b5262fe004da34aa0414fe885a78e", "sha256:12d33c2f4dc442cbdfb0c830f359cfd92e0560c34678a1198ea68f281ada2d21", "sha256:76a1ff61253d86aafba3fd803cc79eb75dd573fb1ee00c6f716a8ea44dcfc414", "sha256:734a6dcc0d105722be038d38341a5f9c30a119082eaac2fa45fb8d51eb335451" ] }, "Metadata": { "LastTagTime": "2025-12-02T04:04:23.335181057Z" }, "Descriptor": { "mediaType": "application/vnd.oci.image.index.v1+json", "digest": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195", "size": 10293 } } ]

  • docker
  • kubernetes
  • ci/cd
  • devsecops
  • 보안-교육
taeho Kim 댓글 2 좋아요 0 조회수 139

인기 태그

인프런 TOP Writers

주간 인기글