묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨개발자를 위한 쉬운 도커
빌드과정에서 USER 부분이 궁금합니다.
강의중해당부분에서 명령을 실행할 사용자를 변경한다고 하셨는데 그러면 궁금한게 해당 사용자에대한 생성과 권한 부여같은것들은 어디에서 진행이 되는것일까요??
-
미해결대세는 쿠버네티스 [초급~중급]
kubernetes dashboard v2.7.0 인증서 등록에서 문제
dash board 접근 시,https://192.168.64.30:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get resource \"services/proxy\" in API group \"\" in the namespace \"kubernetes-dashboard\"", "reason": "Forbidden", "details": { "name": "https:kubernetes-dashboard:", "kind": "services" }, "code": 403 }해당 오류가 발생합니다 권한 문제 같은데.... 인증서도 정상적으로 신뢰함으로 동작하고 있습니다!
-
해결됨개발자를 위한 쉬운 도커
docker run -d -p 8080:3000 관해서 질문 있습니다.
docker run -d -p 8080:3000 --name defaultColorApp devwikirepo/envnodecolorapp제가 이해하고 있는 부분해당 도커 실행 명령어 중 docker run -d -p 8080:3000 명령어는 호스트의 8080 포트를 컨테이너의 3000 포트에 매핑하여 실행한다. 제가 시도한 부분 docker run -d -p 8080:3000 docker run -d -p 8080:3001 로 내부 컨테이터 포트를(3000 -> 3001) 바꾸게 되면 동작하지 않습니다. 제 생각에는 해당 이미지에 할당된 포트번호 있다고 예상했고 docker image inspect devwikirepo/envnodecolorapp 을 실행 후 해당 이미지 Json에 포트번호가 있는것을 확인했습니다. "ExposedPorts": { "3000/tcp": {} }, 제가 궁금한 부분1. "ExposedPorts" 의 "3000/tcp": 내부 컨테이너 포트번호는 별도로 세팅할 수 없나요? 2. 제가 시도하여 찾은 "ExposedPorts"의 "3000/tcp": {} 이 docker run -d -p 8080:3000명령어의 :3000 과 같나요? 3. 8080:3001 로 내부 컨테이너 포트번호를 변경 시 컨테이너 실행은 정상적으로 되지만 왜 Nginx에 접속할 수 없는 걸까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Deploy를 계속 실패합니다.
github에 코드를 푸시하고 action을 확인했을 때 나머지는 정상적으로 수행되는데 Deploy to EB에서 에러가 발생합니다.
-
해결됨개발자를 위한 쉬운 도커
컨테이너 런타임에 관한 질문이 있습니다.
컨테이너 런타임은 컨테이너를 생성 혹은 제거할때에만 관여하는건가요??
-
해결됨개발자를 위한 쉬운 도커
맥에서는 도커를 어떻게 사용하는건가요?
맥에서 iterm에 접속하고 docker -version을 치면 docker server의 os가 linux로 나와있어서 그때부터 의문점이 생겨 질문드립니다. 도커가 리눅스 커널(Namespace, Cgroups)를 활용하여 컨테이너를 만들고 관리하는 것 같습니다. 그런데 맥에서는 어떻게 이게 가능한건지 궁금합니다. 제 예상으로는 도커 데스크탑이 어떤 기술에 의해 리눅스명령을 도커에 실행하면 도커가 명령을 받고 필요한 시스템 콜을 요청할때 도커 데스크탑이 맥 os가 알아들을 수 있게 변환작업을 하는 것같은데 맞는 걸까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
마지막 배포시에 도커 관련 문제
마지막 배포시에 Run echo "***" | docker login -u "***" --password-stdin2 echo "***" | docker login -u "***" --password-stdin3 shell: /usr/bin/bash -e {0}4Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password5Error: Process completed with exit code 1.에러가 지속적으로 발생합니다. 도커 로그인에 사용되는 유저네임과 비밀번호를 그대로 입력하였음에도 계속해서 발생하는 문제입니다.
-
해결됨개발자를 위한 쉬운 도커
이미지안에는 OS 에 관련 궁금한 사항
현재 강좌까지 들은 상황에서 궁금한 점이 있어 글을 쓰게 되었습니다.이미지 안에 OS 도 포함된 것으로 보이는데 그렇다면 이미지를 만드는 주체자는 각 OS 별로 별도로 파일들을 만들어줘야 하나요? 그렇다면 너무 많은 이미지를 생성해야하는 것 아닌가 하는 의문이 듭니다. -- 강의 설명이 아주 친절해서 좋은 것 같아요. :)
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
node api 및 redis 서버
안녕하세요. 강의를 듣고 있는 초보 개발자입니다.test 코드 만드는 부분에서 오류가 나서 진도를 못나가고 있는 상태입니다. export createApp을 했음에도 불구하고 index.test.ts 파일에서 import createApp을 한 후 let app: Express.Application 선언 후 app을 request 인자로 넣을 때 오류가 납니다.또 한가지 질문은 os 환경이 windows인데 redis 설치를 했습니다만 이게 node api와 연동이 되고 있는건지 잘 모르겠습니다..ㅠㅠ redis cli에서 list에 push한 후 typescript로 만든 api를 구동해서 push를 했을 때 성공했다고 postman으로 확인을 했는데 get을 호출하면 [] 빈 리스트가 반환됩니다..ㅠㅠ 제가 node와 타입스크립트로 개발이 처음이라 너무 힘듭니다ㅠㅠ 진도를 나가고싶은데 이 코드를 통해서 빌드 배포를 하는 거 같아서 강의를 처음부터 계속 다시 돌려보면서 프로젝트만 지웠다 다시 만들었다만 반복 중입니다.. 도움 좀 부탁 드리겠습니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
카프카 토픽 생성이 안되요.
docker exec -it kafka kafka-topics.sh --bootstrap-server localhost:9092 --create --topic testTopic위와 같이 터미널에 토픽생성하는 명령어를 작성하면 아무것도 |움직이지 않고 터미널이 멈춥니다.도커는 정상적으로 실행하고 kafka,zookeeper도 정상적으로 실행되어있습니다.도커를 삭제하고 다시 다운로드해서 docker compose사용해서 kafka,zookeeper이미지 다시 작동시켜도 위와같이 토픽생성 명령어 입력하고 작동시 아무것도 안하고 멈춥니다..(p.s 카프카 컨테이너 cli들어가서도 토픽 생성 명령어 작동시켜도 작동안합니다.)혹시 해당 문제 해결법 아실까요..?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Window에서 Volume이 작동하지 않는 문제
Window에서 Volume을 적용할 때 작동하지 않는 경우가 있습니다.예를 들어, "Hello"를 "Hello123"으로 바꿔도 여전히 "Hello"만 나오는 경우입니다. 이런 경우 이전 강의(또는 안내)에서 알려주신 것을 잘 참고해야합니다.강사님의 안내는 다음과 같습니다.Mac의 경우 아래를 사용한다.docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app anonymous123/nodejs하지만, 윈도우의 경우는 아래를 사용해야한다.docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v %cd%:/usr/src/app anonymous123/nodejs 하지만, 저는 Window를 사용하고 있지만 Bash Shell을 사용하고 있었기 때문에 %cd%이 아닌 $(pwd)를 사용해야지 명령어가 작동이 되었습니다.예상할 수 있듯이 이렇게 하면 Volume이 작동되지 않습니다.그렇기 때문에 cmd를 이용하여 %cd% 방식으로 해줘야지 volume이 정상 작동 합니다. 결국 OS가 Window라서 그런거 같은데,,, 솔직히 잘은 모르겠습니다😂도움이 되셨으면 좋겠습니다!!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
next-auth 로그인 시 unauthorized 문제
문제가 몇일째 안풀리는게 있어 문의드려요제가 next-auth를 사용해서 로그인 프로세스를 해보고 있습니다.로컬에서 별도로 배포환경 만들어서 테스트를 했을 때에는 잘 되는데 배포시에 계속 Unauthorized 에러가 발생해서요제가 작성한 [...nextauth].ts 코드입니다.import NextAuth, { User } from 'next-auth'; import CredentialsProvider from 'next-auth/providers/credentials'; import { refreshAccessToken } from 'utils/tokenRefresh'; export default NextAuth({ providers: [ CredentialsProvider({ name: 'Credentials', credentials: { userId: { label: 'UserId', type: 'text', placeholder: 'jsmith' }, password: { label: 'Password', type: 'password' }, }, authorize: async (credentials) => { const res = await fetch(`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/v1/users/signin`, { method: 'POST', body: JSON.stringify({ userId: credentials!.userId, password: credentials!.password, }), headers: { 'Content-Type': 'application/json' }, }); const user = await res.json(); // 로그인 성공 시 사용자 객체를 반환하고, 실패 시 null을 반환 if (res.ok && user) { console.log('ok user', user); return user; } else { console.log('error user', user); return false; } }, }), ], secret: process.env.NEXTAUTH_SECRET, // session: { // strategy: 'jwt', // maxAge: 0, // 브라우저가 닫히면 세션 종료 // // updateAge: 24 * 60 * 60, // 24시간마다 세션 갱신 (옵션) // }, callbacks: { async jwt({ token, user }) { // 사용자 로그인 시 토큰 설정 if (user) { return { ...token, accessJwt: user.result?.accessJwt, refreshJwt: user.result?.refreshJwt, companyId: user.result?.companyId, userName: user.result?.userName, accessTokenExpires: Date.now() + 3600 * 1000, }; } // 토큰 만료 확인 및 리프레시 if (Date.now() > token.accessTokenExpires!) { const newAccessJwt = await refreshAccessToken(token.refreshJwt!); return refreshAccessToken(newAccessJwt); } return token; }, async session({ session, token }) { if (token && token.accessJwt) { const customUser = session.user as User; if (!customUser.result) { customUser.result = { accessJwt: '', refreshJwt: '', companyId: '', userName: '', }; } customUser.result.accessJwt = token.accessJwt; customUser.result.refreshJwt = token.refreshJwt; customUser.result.companyId = token.companyId; customUser.result.userName = token.userName; session.user = customUser; } return session; }, }, }); NEXT_PUBLIC_BACKEND_URL 환경변수는 별도의 백엔드를 구성한 주소이구요 배포는 도커를 사용했습니다.FROM node:20.10 as builder # pnpm 설치 RUN npm install -g pnpm WORKDIR /usr/src/app COPY package*.json ./ RUN pnpm install ARG NEXT_PUBLIC_BACKEND_URL ARG NEXTAUTH_SECRET COPY . . RUN NEXT_PUBLIC_BACKEND_URL=https://${NEXT_PUBLIC_BACKEND_URL} NEXTAUTH_SECRET=${NEXTAUTH_SECRET} pnpm run build FROM node:20.10 RUN npm install -g pnpm WORKDIR /usr/src/app COPY --from=builder /usr/src/app/package*.json ./ RUN pnpm install --prod COPY --from=builder /usr/src/app . # COPY --from=builder /usr/src/app/.next ./.next EXPOSE 3000 CMD ["pnpm", "run", "dev"]NEXTAUTH_SECRET은 프론트 주소를 도커 실행 시 넣어줘야 한대서 도커 실행 할 때 환경변수로 따로 넣어줬구요Docs, Stackoverflow, ChatGPT 등 여러 방면으로 찾아봤는데 해결이 안되더라구요..강의하고는 별개 내용이긴 한데 더이상 물어볼 데가 없어서 강사님께 여쭈어봅니다..
-
미해결
Docker container로 되어 있는 프로그램을 돌리려고 하는데 해결되지 않는 문제가 있습니다.
이런 것을 물어봐도 될까 모르겠습니다만, 진짜 1년이상 가는 삽질의 끝에 어디서 부터 어디를 파야 하는지 도무지 감을 잡지 못해서 여기다가 물어보게 되었습니다.일단 저는 카페24에서 호스팅 서비스를 이용해서 가상 서버 공간을 따로 받았고, centos 7에서 docker와 docker-compose까지는 설치를 했습니다. 그리고 나서 가상화 서버에다가 docker container가 아닌, 그냥 install 명령으로 httpd라고 아파치 서버를 설치해서 일단 홈페이지에 접속하면 아파치 기본 정보는 보이게 만들어 놓는 데는 성공했습니다.문제는 제가 전자연구노트를 설치해 보려고 해서 다음과 같은 과정을 거치면서 상당한 시행착오가 일어나게 되었습니다. 먼저 indigo ELN이라고 해서 오픈소스로 배포 중인 전자 연구노트입니다. 여기서 하나 살펴 보자고 하면, 일단 git hub에 공개적으로 공개되어 있는 물건이기도 합니다. 먼저 git hub에 있는 원본의 파일을 일단 가지고 오는데 까지는 그렇게 까지 큰 문제가 없기는 했습니다. 그리고 나서 다음으로 docker-compose up -d 명령을 사용해서 다음과 같이 도커를 작동 시키는 데 까지도 성공했습니다.실제로 docker ps 명령을 가지고 쳐 보면, 위 스크린샷에서 볼 수 있는 것과 같이 일단 indigo ELN을 구성하고 있는 4개의 도커는 작동을 하고 있는 것을 확인할 수 있습니다. 문제가 그렇다고 해서 접속을 하게 되면 전혀 안되냐 하면, 도커 이미지 속에 있는 index.html파일까지 접근이 되는 것을 확인할 수 있고, 제가 설정해 놓은 문구까지 확인을 할 수 있었습니다. 문제는 8080포트를 쓰고 있는 database의 도커 콘테이너에 접속해서 가지고 있는 콘텐츠를 가지고 와야 하는데 여기서 부터 해결할 수 없는 에러가 발생을 하고 있는 것 입니다. 무엇이 문제인지 몰라서 CORS에러인가 해서 건드려 보면, 삽질이 되고, 다른 어기서 문제인가 해서 보면 그것도 아니고, 거기다가 또 문제라면 문제가 있습니다. 이렇게 파이어폭스의 개발자 콘솔을 보면, invalid host header라고 계속 뜨다가 저런 에러가 터지면서 제가 넣어놓은 문구만 뜨고, 나머지 내용은 전혀 볼 수 없는 상황이 계속되고 있습니다. 당장의 해결이 어렵다고 해도, 어디서 부터 어디를 건드려야 할지 모르는 상황이 되어서 그런데, 여기 인프런에서 관련된 지식이 없는지 그거라도 알아보고자 합니다. 여기저기 검색하고 chat GPT를 사용해도 속 시원한 해결책은 나오지 않고, 중구난방으로 얽히기만 계속 하고 있습니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
예제 프로젝트 상에서의 Kafka 사용시 궁금한점
강의 잘 듣고 있습니다. 질문사항이 두개 있습니다.1.4강의 [문제점] 영상에서 쿠폰생성 10000개 요청으로 인해 mysql이 1분에 100개의 insert가 가능하다고 가정할 시 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행' 된다고 하셨는데요.예제로 사용하신 Kafka 사용 예제에서는 Consumer 프로젝트도 어차피 API프로젝트와 같은 DB를 바라보고 있으므로, 어차피 Kafka를 사용하여도 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행'되지 않나요? 왜 여쭤보냐면, 강의 내에서 Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책을 Kafka로 사용하셔서 문의드립니다.2.5강의 [Consumer 사용하기] 영상을 보면 API 프로젝트 Consumer 프로젝트가 별개로 존재합니다.그러므로 API프로젝트의 테스트 케이스가 종료되어도 Consumer 프로젝트는 이미 Kafka로 100개의 데이터가 스트림으로 들어오는 상태이므로, 테스트케이스가 종료되어도(즉, API프로젝트가 종료되어도) Cunsumer 프로젝트는 종료가 되지 않은 상태이므로 100개의 쿠폰이 DB에 생성이 되어야 하는게 아닌지요?왜 여쭤보냐면, 강의 내에서는 API프로젝트가 종료되면 Consumer 프로젝트도 작업이 멈추는 현상이 있어서 문의드립니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
인자에 객체 값을 넣는 이유
인자에 객체 값을 넣는 이유가 안전하기 때문이라고 하셨는데 정확히 어떤 부분이 안전한지 알려주실 수 있나요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
쿠폰 카운트를 Redis에 의존하고 있는데요
만약 Redis에 장애가 발생한다면 2차 장치로 DB Count에 의존할 수 밖에 없는걸까요?실무에선 어떻게 대응하시는지 궁금합니다!
-
미해결
M2 Ventura 13.5.1 colima 실행 오류
colima 를 통해서 doker에 oral 11g를 사용하려고 하는데요 colima start 시엔 되는데 저렇게 하면 안됩니다ㅠ그리고 start로 그냥 실행 시켜서docker run --name oracle -d -p 1521:1521 jaspeen/oracle-xe-11g도커 오라클 까진 Ps로 보이고 잘 설치되지만 docker exec -it oracle sqlplus이걸 했을때 아이디 system / 패스워드 oracle 해도 자꾸 접속이안되는데 ㅠㅠ 해결방법 있을까요 ?
-
미해결
M2 Ventura / Doker 실행 오류 문의드립니다
안녕하세요 이번에 M2 air 를 구매 후 열심히 교육 듣고있는데 처음엔 됬는데 다시 실행하려 보니까 안되서요몇번 노트북을 초기화 후에 재설치를 해도 똑같네요ㅠㅠ이유를 모르겟는데 .. 혹시 해결방법 아는 방법이 있을까요 docker login 진행 현재 구글 Authernicator 로 2차 인증까지 해놓은 상태이고 pc에 docker 모두 실행시켜서 로그인도 완료 된 상태입니다.docker 앱 종료 후 동일하게 진행 하더라도 저렇게 나오더라구요해당 토큰관련 오류도 확인해봤으나 이상이 없는데 무엇이 문제일까요ㅠㅠ
-
미해결
쿠버네티스 클러스터 구성
안녕하세요, 선생님들.. 입사한지 막 1년이 된 어른이 입니다... 지금 최대 난관에 봉착 되어 있습니다.사내 망 베어메탈 환경에 구축된 쿠버네티스 클러스터에, 사외 망에 있는 VM 10대를 워커 노드로 추가하려고 합니다. 문제가 VM 특성 상 NAT IP 1개에 SSH 접속 포트는 10개로 (1xx01~1xx10) 구별하고 있고, 모든 포트도 오픈 할 수 없는 상황입니다. 이런 조건에서 VM을 워커노드로 추가가 가능한 것인지..., 가능하다면 좋은 방법이 있으신지 질문 드려봅니다. 노드 추가는 Kubespray로 하고 있고, CNI는 calico 환경입니다.추가로, VM에 배포한 Calico Pod의 에러로그를 보니 10.233.0.1 (사내 망의 Master Node의 default service 주소)를 못 찾고 있었습니다. VM Calico Pod -> Master Node k8s default service -> Master Node api server 순으로 찌르는 것 같았습니다. 더불어, VM에서는 curl -k "https://121.134.39.25(master node nat ip):6443/api" 할 때 응답이 오긴 했었습니다.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker mysql or mariadb 실행 에러 참고하세요
mariadb 최신버전 사용시 Dockerfile 그대로 작성시 실행 에러가 발생합니다.저는 sql 을 백업해서 스키마랑 테이블 새로 만들도록 수정해서 해결했습니다.추가로 실행후 mysql 접속도 mysql 명령어가 아닌 mariadb 로 작성하셔야 됩니다.mariadb -h127.0.0.1 -uroot -pmysqldump -u root -p mydb > mydb.sqlFROM mariadb ENV MYSQL_ROOT_PASSWORD test1357 ENV MYSQL_DATABASE mydb COPY ./mydb.sql /docker-entrypoint-initdb.d/ EXPOSE 3306