소개
다양함이 어우러지는 세상을 꿈꾸는 소프트웨어 개발자입니다.
백엔드 개발부터 지라 설정, 업무 프로세스 개선까지 이런저런 경험을 했습니다.
클라우드를 잘 써보고자 현업에서 다양한 시도를 하고 있습니다.
44bits 블로그와 팟캐스트 운영에 참여하고 있습니다.
강의
로드맵
전체 1수강평
- 도커 쓸 땐 필수! 도커 컴포즈
게시글
질문&답변
docker 설치 후 첫 실행 시 docker.sock. 에러
안녕하세요. 제가 최근에 인프런에 접속을 하지 못했어서 질문을 이제야 봤네요.답변이 늦어 죄송해요.minikube로 해결하셨다니 다행이예요.직접 해결할 정도로 성장한 스스로를 칭찬해주셔도 좋겠어요. ^^
- 0
- 2
- 648
질문&답변
도커 컴포즈 그대로 해서 docker-compose up -d 명령어 쳤는데, 프론트엔드랑 몽고디비는 up 상태가 되는데, 백엔드에서 몽고디비 커넥션이 안되네요
안녕하세요. 제가 최근에 인프런에 접속을 하지 못했어서 질문을 이제야 봤네요.답변이 늦어 죄송해요. 말씀처럼 백엔드 API가 몽고디비와 연결이 안 되시는 상황으로 보이네요. 먼저, mongodb가 도커 컴포즈로 제대로 실행되는지 확인해야 할 것 같아요. 다음 명령어의 결과를 유심히 살펴보면 좋겠어요.docker-compose up mongodb 만약 도커 컴포즈로 mongodb가 잘 실행되고 있다면, 혹시 도커 컴포즈로 띄운 mongodb 외에 27017 포트를 사용하는 다른 프로세스가 있는지도 확인해보면 좋겠어요. (일반적인 경우라면 포트 충돌 때문에 mongodb 컨테이너가 제대로 실행되지 않아야 하겠으나, 도커 환경에 따라 실행이 잘 되기도 해요.) 호스트에서 27017 포트를 사용하는 프로세스를 찾으려면 다음 명령어를 사용하시면 돼요.# Windows라면 netstat -ano | findstr :27017 # macOS나 리눅스라면 netstat -tuln | grep 27017 # 혹은 lsof -i :27017 # 혹은 ss -tuln | grep 27017
- 0
- 2
- 368
질문&답변
ghost 테스트 안됨
안녕하세요. 제가 최근에 인프런에 접속을 하지 못했어서 질문을 이제야 봤네요.답변이 늦어 죄송해요. 일단 ghost 이미지에서 기본으로 mysql을 권장하는 건 맞아요.하지만 다음 환경변수를 입력하면 아직은 sqlite3도 사용할 수 있어요. database__client = "sqlite3" database__connection__filename = "content/data/ghost.db" docker-compose.yml 파일이라면 다음과 같이 되겠어요.... services: ghost: image: ghost:latest environment: - database__client=sqlite3 - database__connection__filename=content/data/ghost.db ports: - "2368:2368" restart: always 알려주신 대로 수업 자료도 업데이트해야겠네요.깊이 있는 피드백 고맙습니다! ^^
- 1
- 2
- 273
질문&답변
docker compose up 에러 질문드립니다~
안녕하세요. 도커컴포즈 실습 중에 어려움을 겪으셨네요. 에러 메시지를 보니 postgres 서버 실행 중 디렉터리를 찾지 못했다는 내용이었어요. (PostgreSQL Database directory appears to contain a database; Skipping initialization) 그렇다보니 데이터베이스 초기화가 제대로 되지 않았을 듯 합니다.도커 허브의 postgres 공식 이미지 문서에 가서 volume 설정 관련 내용을 찾아보니, /var/lib/postgresql/data를 연결하라고 안내되어 있네요.마지막으로 gist에 공유해주신 volume 설정을 확인해보니 /var/lib/postgres/data로 지정돼 있어서, 이 부분이 잘못 설정된 것 같다는 추측을 해봅니다. 아울러, python11의 오류는 Django 애플리케이션이 데이터베이스에 접속하지 못했다는 내용으로 보이는데요. (psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above) 위에서 말씀드린 대로 수정하여 postgres 데이터베이스가 잘 초기화된다면, 이후로는 발생하지 않을 것으로 보입니다. 혹시 잘 풀리지 않는다면 다시 답글 남겨주세요. ^^ p.s. 소스코드와 오류 메시지를 gist에서 올려주셔서 살펴보기가 편했네요.
- 1
- 1
- 1.2K
질문&답변
Volume 관련 질문 드립니다.
안녕하세요. 도커 컴포즈에서 볼륨에 저장된 데이터를 팀원들과 공유하는 방법이 궁금하셨네요.볼륨 자체를 다른 팀원과 공유할 방법은 없습니다. 도커에서 볼륨 속 내용을 익스포트하는 기능이 없기 때문인데요.그래서 저는 두 가지 방법을 사용했습니다.첫째로 DB 테이블 구조는, 도커 컴포즈 실행시 테이블을 생성하거나 수정하는 스크립트를 실행했고요. (Django에서는 makemigrations 같은 명령으로 처리했습니다.)둘째로 DB 데이터는, pg_dump를 사용해서 (MySQL에서는 mysqldump) DB 데이터의 덤프 파일을 만들고 팀원에게 전달했어요. 팀의 환경을 잘 몰라서 불가능할 수도 있겠지만, 로컬 호스트가 아닌 팀원들이 함께 접속할 수 있는 공용 서버에서 도커 컴포즈를 실행하는 방법도 시도해 볼 수 있겠어요. 다만 이 경우 공용 서버 관리에 노력이 조금 들어가겠네요. (소스코드 업데이트라든지) 도움이 되었길 바라며, 더 궁금한 점은 언제든 올려주세요.고맙습니다.
- 0
- 1
- 235
질문&답변
바로 멈춤 문제
안녕하세요.볼륨 설정시 mysql 컨테이너가 제대로 실행되지 않는 문제가 궁금하셨군요. 문제를 이해하고 해결하려는 자세를 응원합니다. 오류 로그를 좀더 길게 보지 않아서 확신하기는 어렵지만 몇 가지를 제시해볼테니 시도해보세요.볼륨 관련 문제를 해결하는 가장 쉬운 방법은 호스트 컴퓨터의 디렉터리 대신 도커의 볼륨을 사용하는 겁니다. 이미 docker-compose.yml 파일 내에 db_data라는 볼륨을 선언해두셨기 때문에(가장 아래의 두 줄), 이 볼륨을 그대로 사용하는 것이지요.version: '3' services: db: image: mysql:5.7 networks: - local_network volumes: - db_data:/var/lib/mysql # 여기를 수정했어요 networks: local_network: driver: bridge volumes: db_data: {} 두 번째로, 올려주신 docker-compose.yml에서 빠진 부분이 하나 있어요. mysql 컨테이너는 구동시 다음 환경변수 중 하나를 반드시 설정해야만 합니다.MYSQL_ROOT_PASSWORDMYSQL_ALLOW_EMPTY_PASSWORDMYSQL_RANDOM_ROOT_PASSWORD 따라서 다음과 같이 environment를 추가해주면 작동할 것 같습니다.version: '3' services: db: image: mysql:5.7 networks: - local_network volumes: - E:\dadta:/var/lib/mysql environment: # 여기랑 - MYSQL_ROOT_PASSWORD=test # 여기를 추가했어요 networks: local_network: driver: bridge volumes: db_data: {} 더 궁금한 점이 있다면 언제든 질문 올려주세요. 고맙습니다.
- 0
- 1
- 251
질문&답변
볼륨 질문 드립니다.
안녕하세요. 도커 컴포즈 실행시 mysql의 볼륨을 호스트 컴퓨터의 디렉터리로 지정했을 때 컨테이너가 제대로 실행되지 않는 현상을 겪고 계시네요. 도커 컴포즈에서 자주 접하는 오류이므로 꼭 이해하고 넘어가시면 좋겠어요. './'는 도커 컴포즈를 실행하는 위치입니다. './'에는 서비스와 관련된 다양한 파일들이 존재할 텐데요. mysql의 데이터가 저장될 볼륨을 이 위치로 마운트하면, `/var/lib/mysql`의 파일들이 시스템의 파일을 덮어쓰게 됩니다. (진짜로 덮어쓰면 문제가 되니까 mysql 구동 단계에서 다른 파일들이 있다는 걸 감지해서 작동을 멈춥니다.) 따라서 ./data 디렉터리를 만든 후 ./data:/var/lib/mysql 처럼 지정하시면 문제가 해결될 거예요. 다만 로컬 호스트의 디렉터리에 마운트를 하시면 다른 문제들(git 저장소에 안 들어가게 신경써야 한다거나 실수로 파일 하나를 삭제한다거나)이 발생할 수 있으니, 가급적 도커가 관리하는 볼륨을 사용하시기를 추천합니다. 혹시 다른 문제를 겪으신다면 언제든 올려주세요. :)
- 1
- 1
- 190
질문&답변
실행시 바로 멈춤
안녕하세요. 도커 컴포즈에서 실행 중인 컨테이너 내부의 배시 셸을 실행하는 방법이 궁금하셨군요. 도커 컴포즈를 사용할 때면 자주 필요해지는 명령어인데 잘 물어보셨어요. 컨테이너 내부의 배시 셸을 실행하는 명령은 다음과 같습니다. docker-compose exec {서비스이름} /bin/bash 만약 서비스 이름이 web이라면 다음처럼 하면 되겠고요. docker-compose exec web /bin/bash 여기서 서비스 이름이란 docker-compose.yml에서 services: 아래에 정의한 이름이예요. 다음과 같은 파일에서는 web과 db가 서비스 이름이 되겠네요. # docker-compose.yml version: '3' services: web: ... db: ... 더 궁금한 점이 있다면 언제든 질문 올려주세요. ^^
- 1
- 1
- 269
질문&답변
강의자료 html에 있는 소스코드처럼 어떻게 작성하나요?
안녕하세요. HTML 파일 강의안에서 vscode의 일부분처럼 코드가 표시된 것이 궁금하다고 질문 주셨네요. 이 질문이 HTML 파일 내의 소스코드 부분에 검은색 배경과 특정 키워드에 색이 입혀진 방식이 궁금하다는 말씀인가요? 만약 그렇다면 제가 사용한 방법을 알려드릴게요. 제가 마크다운 형태로 수업 자료를 작성했고, typora라는 앱을 사용하여 마크다운을 html 파일로 변환했습니다. typora에는 문서를 꾸며주는 테마들이 존재했는데 이 테마들이 소스코드 부분을 그렇게 바꾸어주었어요. 순수한 HTML 안에서 소스코드에 색을 입히는 방법은 소스코드 하이라이팅으로 검색해보셔도 답을 찾으실 수 있겠습니다.
- 1
- 1
- 194
질문&답변
docker-compose.yml 파일 문법자료 문의 입니다
안녕하세요. docker-compose.yml의 파일 문법에 대해 문의해주셨네요. 수업 자료(수업 0-1)에 해당 내용을 추가해두었습니다. 제가 자료를 만들면서 누락했던 부분을 알려주셔서 고맙습니다. ^^
- 1
- 1
- 201