묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 쉽게 구성하는 MSA 서비스 모니터링 대시보드
/send 404 에러
안녕하세요, gin 서버를 실행하고 curl -X GET localhost:8080/send명령어를 실행하면 404 page not found 에러가 나옵니다.어떤 부분이 문제인지 모르겠어 깃허브 주소 남깁니다.확인해주시면 감사하겠습니다. https://github.com/bonzonkim/trace-in-go 감사합니다.
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
lombok 설정에서 오류가 발생해요
그대로 따라했는데 왜 저기서 오류가 발생하는지 모르겠습니다. lombok 이 제대로 안되네요 ㅠㅠ
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
2 -1 lombok 설정에서 오류가 발생해요
그대로 따라했는데 왜 저기서 오류가 발생하는지 모르겠습니다.
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
Virtual Machine 생성시 가격문의
472.31/month 라는 가격이 한달 내내 해당 virtual machine을 사용한다고 가정했을때 과금 되는 가격이라고 이해하면 될까요?
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
/usr/local/apache2/htdocs 경로관련
docker주요명령익히기5(10:09)에서 보면, 이 명령어를 수행하였고, 성공적으로 강사님 디렉토리의 index.html 까지도 접속이 되었는데요. 문제는 aws 에서 /usr/local/apache2/htdocs 디렉토리를 찾을수가 없어서요. 아무리 찾아봐도 안보이는데... aws 에 /usr/local 에는 apahe나 apache2 의 디렉토리가 안보입니다. 어디서 찾을 수가 있는 걸까요?
-
해결됨개발자를 위한 쉬운 도커
[PostgreSQL 컨테이너 구성] 강의 실습중 명령어 에러 질문드립니다
안녕하세요강의 실습중에 docker cp ./config/postgresql.conf postgres:/etc/postgresql/custom.conf이 명령어를 실습하는 과정에서 오류가 발생했는데요 깃배시에서 위 명령어를 실행하면 자꾸 Successfully copied 3.07kB to postgres;C:\Program Files\Git\etc\postgresql\custom.confError response from daemon: No such container: postgres;C이런 에러가 발생합니다. 이것저것 해보다가 깃배시 대신에 cmder로 명령어를 실행하니까 무사히 명령어가 실행되서 실습을 진행할 수 있었는데요(바로 이어진 실습에서 docker cp ./init/init.sql postgres:docker-entrypoint-initdb.d 이 명령어는 깃배시로 잘 입력되었습니다) 제 깃배시 명령어 입력에서는 뭐가 문제였는지 알고싶습니다!
-
해결됨AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
단일 AZ의 ECS 환경 구축에 대해서 질문드립니다!
안녕하세요 강사님! 강의 잘 듣고 있습니다!다름이 아니라 현재 팀 프로젝트의 MVP에서 사용할 API 서버(스프링 부트)를 배포할 ECS 환경을 구축 중입니다! MVP 단계이다 보니 고가용성 보다는 비용을 절약하기 위해 단일 AZ로 인프라를 구축하려 합니다!그래서 VPC Endpoint도 단일 AZ의 private subnet1 하나에만 연결해 놓은 상태인데요. 이렇게 구성하면 ECS의 클러스터를 만들 때, EC2의 Subnet을 선택하는 단계에서 앞서 endpoint들을 연결한 Subnet 1개만 선택해 주면 될까요? + ECS의 서비스를 만들 때도 네트워킹 설정 부분에서 해당 서브넷 1개만 연결해주면 될까요?
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
azure 처음 가입했을 때 주는 200달러가 없는 것 같아요..
azure에 새로 가입했고 그대로 따라가고 있었는데 저는 $200가 있다는 문구가 따로 안뜨는데 어디서 확인할 수 있나요?예산 탭에 들어가도 예산이 없다고 나오네요
-
미해결[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
Private Subnet과 Gitlab
안녕하세요. 이번에 public subnet 에 있는 bastion host를 통해서 private subnet에 있는 web server라는 ec2에 cli 명령어로 gitlab ee 버젼을 설치해서 도메인(a.test.com)으로 설정하였습니다. 그런데 sudo vi /etc/gitlab/gitlab.rb 파일에 bastion host의 public ip를 넣어야 도메인으로 gitlab server의 사이트로 접속이 되던데.. 이러면 public ip가 그대로 노출될 수도 있어서 도메인으로 바꾸면 사이트의 접속이 막히고 있습니다. 도메인으로 설정을 바꾸면 어떻게 해야하나 질문을 드립니다. CI/CD 과정은 리포지토리는 Gitlab, 빌드과정은 codebuild를 사용하려고 합니다. codebuild와 연결을 할때도 액세스 토큰이 필요해서 이부분은 어떻게 설정해야 하나요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
쿠키 저장이 되지 않습니다.
auth.ts에서 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET) console.log(token) //쿠키 저장 res.set("Set-Cookie", cookie.serialize('token', token)); return res.json({user, token});token은 잘 찍히고 요청 헤더에 포함되어 있는데TypeError serialize 부분에서 에러가 뜨고실제 응답 에러가 납니다.... 쿠키 저장이 안되는 것 같습니다.serialize가 undefine 되었다는데 위에 const token으로 제대로 선언되고 출력까지 잘 되는데 이유를 모르겠습니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', (2)
아래 질문 관련입니다.server.ts origin 부분을 강사님처럼 다음과 같이 작성하면 header 오류가 납니다.const origin = process.env.ORIGIN; app.use(cors({ origin, credentials: true }))근데 아래처럼 const origin을 다음과 같이 환경변수를 거치지 않고 명시하면 헤더 오류 대신 500 오류가 나면서 토큰이 생성되지 않습니다. (로그인 페이지에서 로그인 시)const origin = 'http://localhost:3000'; app.use(cors({ origin, credentials: true })) 서버에서 process.env.ORIGIN, process.env.JWT_SECRET을 찍어봤을땐 잘 나오는데...이 이유로 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET)이 명령줄이 제대로 실행되지 않는 걸까 싶어 process.env.JWT_SECRET를 'super_secret'으로 바꿔봐도 똑같은 증상입니다. 확실하진 않지만 이 때문에 토큰 생성에 오류가 생겨서 500 에러가 뜨는 것인가 싶은데 어떻게 해결하면 좋을까요?
-
미해결대세는 쿠버네티스 (초급~중급편)
vagrant box add
add 명령어를 실행하면 그림처럼 "transfer closed with 1096801137 bytes remaining to read" 해당 에러가 발생하는데 이유를 알 수 있을까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Elastic Beanstalk에서 도메인 클릭시 react 이미지가 안나오고 다른 화면이 나오는데
Congratulations!Your Docker Container is now running in Elastic Beanstalk on your own dedicated environment in the AWS Cloud.This environment is launched with Elastic Beanstalk Docker PlatformVideo TutorialsYouTube: Run a Docker Container from the Docker RegistryYouTube: Use Private Docker RepositoriesSample AppsGitHub: PHP and Amazon RDSGitHub: Python, DynamoDB, and SNSDocumentationDeploying Docker with AWS Elastic BeanstalkAWS Elastic Beanstalk overviewAWS Elastic Beanstalk concepts이러한 화면이 나오는데 이것도 성공한 것인가요? 아니면 제가 배포한 화면이 나와야 하지 않나요??
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',
로그인 페이지에서 로그인을 하면 500, 커뮤니티 생성 페이지에서 생성을 하면 401 AxiosError가 뜹니다. <login.tsx>import axios from 'axios'; import InputGroup from '../components/InputGroup' import Link from 'next/link' import { useRouter } from 'next/router'; import React,{ FormEvent, useState } from 'react' import { useAuthDispatch } from '../context/auth'; axios.defaults.withCredentials = true; const Login = () => { let router = useRouter(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [errors, setErrors] = useState<any>({}); const dispatch = useAuthDispatch(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try{ const res = await axios.post("/auth/login", {password, username}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) dispatch("LOGIN", res.data?.user); } catch(error: any){ //console.log(error); setErrors(error.response?.data || {}) } } return ( <div className='bg-white'> <div className='flex flex-col items-center justify-center h-screen p-6'> <div className='w-10/12 mx-auto md:w-96'> <h1 className='mb-2 text-lg font-medium'>로그인</h1> <form onSubmit={handleSubmit}> <InputGroup placeholder='Username' value={username} setValue={setUsername} error={errors.username} /> <InputGroup placeholder='Password' value={password} setValue={setPassword} error={errors.password} /> <button className='w-full py-2 mb-1 text-xs font-bold text-white uppercase bg-gray-400 border border-gray-400 rounded'> 로그인 </button> </form> <small> 아직 아이디가 없으신가요? <Link href="/register" legacyBehavior> <a className='ml-1 text-blue-500 uppercase'>회원가입</a> </Link> </small> </div> </div> </div> ) } export default Login<create.tsx>import axios from "axios"; import { GetServerSideProps } from "next"; import InputGroup from "../../components/InputGroup" import {useState, FormEvent} from "react"; import {useRouter} from "next/router" axios.defaults.withCredentials = true; const SubCreate = () => { const [name, setName] = useState(""); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [errors, setErrors] = useState<any>({}); let router = useRouter(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try { const res = await axios.post("/subs", {name, title, description}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) router.push(`/r/${res.data.name}`); } catch (error: any) { // console.log(error); setErrors(error.response?.data || {}); } } return ( <div className="flex flex-col justify-center pt-16"> <div className="w-10/12 mx-auto md:w-96"> <h1 className="mb-2 text-lg font-medium"> 그룹 만들기 </h1> <hr /> <form onSubmit={handleSubmit}> <div className="my-6"> <p className="font-medium">Name</p> <p className="mb-2 text-xs text-gray-400"> 그룹 이름은 변경할 수 없습니다. </p> <InputGroup placeholder="이름" value={name} setValue={setName} error={errors.name} /> </div> <div className="my-6"> <p className="font-medium">Title</p> <p className="mb-2 text-xs text-gray-400"> 주제를 입력해 주세요. </p> <InputGroup placeholder="주제" value={title} setValue={setTitle} error={errors.title} /> </div> <div className="my-6"> <p className="font-medium">Description</p> <p className="mb-2 text-xs text-gray-400"> 그룹에 대한 설명을 입력해주세요. </p> <InputGroup placeholder="설명" value={description} setValue={setDescription} error={errors.description} /> </div> <div className="flex jstify-end"> <button className="px-4 py-1 text-sm font-semibold rounded text-white bg-gray-400 border" > 그룹 만들기 </button> </div> </form> </div> </div> ) } export default SubCreate<subs.ts>import {Router, Request, Response} from "express"; import jwt from "jsonwebtoken" import { User } from "../entities/User"; import userMiddleware from "../middlewares/user" import authMiddleware from "../middlewares/auth" import { AppDataSource } from "../data-source"; import Sub from "../entities/Sub"; import { isEmpty } from "class-validator"; const createSub = async (req: Request, res: Response, next) => { const {name, title, description} = req.body; try { let errors: any = {}; if (isEmpty(name)) errors.name = "이름은 비워둘 수 없습니다."; if (isEmpty(title)) errors.title = "제목은 비워둘 수 없습니다."; const sub = await AppDataSource.getRepository(Sub) .createQueryBuilder("sub") .where("lower(sub.name) = :name", { name: name.toLowerCase() }) .getOne(); if (sub) errors.name = "서브가 이미 존재합니다."; if (Object.keys(errors).length > 0) { throw errors; } } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } try { const user: User = res.locals.user; const sub = new Sub(); sub.name = name; sub.description = description; sub.title = title; sub.user = user; await sub.save(); return res.json(sub); } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } }; const router = Router(); router.post("/", userMiddleware,authMiddleware, createSub); export default router; <server.ts>import express, { response } from "express"; import morgan from "morgan"; import { AppDataSource } from "./data-source"; import authRoutes from './routes/auth' import subRoutes from './routes/subs' import cors from 'cors'; import dotenv from 'dotenv'; import cookieParser from "cookie-parser"; const app = express(); const origin = process.env.ORIGIN; const corsOption = { origin: "http://localhost:3000", credentials: true } app.use(cors(corsOption)) app.use(express.json()); app.use(morgan('dev')); app.use(cookieParser()); dotenv.config(); app.get("/", (_, res) => {res.send("running")}); app.use("/api/auth", authRoutes) app.use("/api/subs", subRoutes) console.log(process.env.ORIGIN) let port = 4000; app.listen(port, async () => { console.log('server running at http://localhost:${port}'); AppDataSource.initialize().then(async () =>{ console.log("database initialized") }).catch(error => console.log(error)) })
-
해결됨그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
9.6강의 소스 수정 요청 및 에러 문의
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]안녕하세요. 9.6 강의 진행 중 에러가 발생하여, 관련하여 문의 드립니다.먼저 소스 수정 요청으로nfs-provisioner_uninstaller.sh 스크립트 delete 로 변경 부탁드립니다. https://github.com/sysnet4admin/_Lecture_k8s_learning.kit/blob/main/ch9/9.6/uninstaller/nfs-provisioner_uninstaller.sh) 에러 문의입니다.다음과 같이 helm 으로 po 및 sc가 생성 했습니다.$ k get po NAME READY STATUS RESTARTS AGE net 1/1 Running 5 (3d7h ago) 46d nfs-provisioner-nfs-subdir-external-provisioner-bcb4c56bc-47vmk 0/1 CrashLoopBackOff 4 (79s ago) 5m22s [17:11:11][root@cp-k8s ~/_Lecture_k8s_learning.kit/ch9/9.6] $ k get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE managed-nfs-storage cluster.local/nfs-provisioner-nfs-subdir-external-provisioner Delete Immediate true 5m27s그 다음으로 deploy-w-pvc-svc.yaml 을 apply 하고 나면 nfs는 에러가 발생하고 pvc는 pending 상태로 머물러 있습니다.pod/nfs-provisioner-nfs-subdir-external-provisioner-bcb4c56bc-47vmk 0/1 Error 6 (3m29s ago) 9m33s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE persistentvolumeclaim/pvc-dynamic Pending managed-nfs-storage <unset> 40s$ k logs pod/nfs-provisioner-nfs-subdir-external-provisioner-bcb4c56bc-47vmk -f F1115 08:15:14.771579 1 provisioner.go:247] Error getting server version: Get "https://10.96.0.1:443/version?timeout=32s": dial tcp 10.96.0.1:443: i/o timeout조치를 어떻게 하면 될까요?
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
8.6 강의 중 sysnet4admin/chk-info 이미지 bash 이슈
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]안녕하세요. 어제 tardy-nginx 이미지와 같은 이슈인것 같은데요.sysnet4admin/chk-info 이미지도 bash가 없습니다.$ k exec deploy-podselector-int-only-78f84d76f6-mdks5 -it -- /bin/bash error: Internal error occurred: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "87fc9a16c37309940a9369f3128784a6beaba14bf2781064500b8876ad3653ca": OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown *일단은 /bin/sh 로 접속해 nc 명령어로 통신 확인만 했습니다.
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
드디어 맥에서도 virtualbox가 지원 됩니다.
드디어 맥에서도 virtualbox가 지원 됩니다. 맥으로도 virtual box 강의를 들어도 될까요?아니면 업데이트 예정이 있으실까요?[질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
8.3강의 set-ctx-pod-admin.sh 수정 요청
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]안녕하세요.8.3 강의 진행 중 set-ctx-pod-admin.sh 해당 스크립트가 제대로 동작하지 않아 확인해보니TOKENNAME=`kubectl -n $NAMESPACE get serviceaccount $SERVICEACCOUNT -o jsonpath={.secrets[0].name}`해당 부분에서 값을 못 가져와서 동작을 못 하고 있었습니다.이미 해당 부분 위에서 값이 설정되어 있는거 같아TOKENNAME='sa-pod-admin-token'kubectl 부분 주석처리하여 정상 동작 하였습니다. 따라서.. 원활한 실습을 위해TOKENNAME=`kubectl -n $NAMESPACE get serviceaccount $SERVICEACCOUNT -o jsonpath={.secrets[0].name}`해당 부분 주석처리해서 소스 업데이트 부탁드리겠습니다.
-
미해결AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
AWS 계정 Budget 설정 (실습) 영상 오류?
AWS 계정 Budget 설정 (실습) 영상이 소리만 나오고 화면이 검은색인데 정상일까요?
-
미해결대세는 쿠버네티스 (초급~중급편)
대시보드 접속 URL이 이게 맞나요?
자료에 있는 아래 링크로 접속 후 SKIP 했는데 위와같이 데이터가 표시되지 않는다고 나오네요 강의를 보니 아래 URL 말고 다른게 있는거같은데 혹시 어떻게 접속해야하나요 https://192.168.56.30:30000/#/login