일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- container
- docker
- Docker배경
- docker container
- repository
- anonymous volume
- crossbrowsing
- WORKDIR
- template engine
- Copy
- 컨테이너간 통신
- Docker Desktop
- spring boot
- env
- named volume
- 도커파일
- docker hub
- Detached
- dockerignore
- dockerfile
- 명명된 볼륨
- docker image
- 익명볼륨
- attached
- Thymeleaf
- docker예시
- docker volume
- bind mount
- Port Fowarding
- arg
- Today
- Total
목록전체 글 (10)
코딩왕 미룡
크로스브라우징 테스트에서 Safari 브라우저의 호환성 확인 및 조치 location.reload windows에서는 location.reload를 화면 새로고침으로 인식하지만 safari에서는 url클릭 + enter로 인식 쿼리스트링을 포함한 get방식이라면 상관없으나 백단을 통해 데이터를 주고 받는 경우라면 location.reload 사용시 데이터가 유실되는 문제 발생 🟥 : 등록된 파일을 삭제하면 바로 ajax로 DB에 저장된 파일을 지우고 페이지를 reload. 페이지가 다시 load되면 서버에서 넘겨받은 데이터가 유실되어 세팅되지 않는 이슈 발생 🟨..? : 해결방법을 못찾아서 그냥 목록으로 화면 전환을 시켜버렸는데.. 방법 좀 알려주세요 .. window.history.back 사파리,파이..
◦ 확장 프로그램 - Java Extension Pack - Spring Boot Extension Pack - Spring Boot Tools ◦ 프로젝트 생성 Ctrl + Shift + P 를 눌러 커맨드 팔레트(Command palette) open Spring initalizr 검색 후 Maven or Gradle 프로젝트 생성 Spring Boot version 선택 Project language 선택 Group Id 등록: 보통 도메인 역순으로 입력 ex) example.app Artifact Id 등록: 이 id로 프로젝트가 생성 Packaging type 선택: JAR/WAR Java Version 선택 ❗ 주의 Thymeleaf 사용을 위한 경로 확인 Spring boot 에서는 템플릿용..

네트워크 / 요청(request) 1. 컨테이너에서 웹사이트와의 통신 - 특별한 설정 없이 코드만으로 작동가능 2. 컨테이너와 호스트와의 통신 - 도커가 인식할 수 있는 특수 도메인(host.docker.internal)을 사용 3. 컨테이너와 컨테이너 간의 통신 - ex) 데이터베이스 컨테이너와 통신을 하고 싶음 - docker container inspect에서 IPAddress를 가져와 host.docker.internal를 대체 - 직접 컨테이너를 검사해서 적어야 하며 IPAddress가 변경되면 이미지를 다시 빌드해야 하는 번거로움이 있음 - 이를 해결하기 위해 --network 명령 사용 - -network - 위와 같은 과정을 자동으로 수행하는 명령어 - 컨테이너의 이름을 보고, 코드에 플러..
노드 이미지를 구축하고자 함 FROM node 디폴트로 모든 명령은 도커 컨테이너 및 이미지의 작업 디렉토리에서 실행 그 작업 디렉토리는 컨테이너 파일 시스템의 루트 폴더 npm install 도 app 폴더 내부에서 실행하고 싶음 도커에게 모든 명령이 그 폴더에서 실행되어야 한다고 알림 WORKDIR /app Dockerfile과 동일한 폴더에 있는 모든 파일 + 모든 하위폴더가 컨테이너 내부의 app 폴더에 복사됨 (폴더가 존재하지 않는 경우는 이미지와 컨테이너에 생성됨) WORKDIR 를 app 폴더로 지정했기 때문에 COPY도 이 작업 디렉토리를 기준으로 실행됨 but, 가독성을 위해 명시적으로 표현해주는 것이 좋음(절대경로) COPY . /app (모든 로컬 파일을 이미지에 복사한 후)노드 애플..
◦ docker push [] - Create repository - 레파지토리 이름 지정 후 public 선택 후 Create (개인 레파지토리는 하나밖에 생성 못함) - 업로드를 원하는 이미지의 name을 저장소에 적힌 슬래쉬(/)를 포함한 이름으로 바꿔야 함 - 이미지를 push 하는 경우 이미지의 전체가 업로드되지는 않음 ex) 내가 만든 이미지가 노드에 의존하고 있다면(dockerfile의 FROM에서 확인) 이미 도커 허브에 존재하는 이미지(노드)이므로 그 노드 이미지에 대한 연결을 설정하여 필요한 추가 코드만 푸시함 → 이미지 전체가 아닌 추가 정보만 푸시 ◦ docker pull (이 과정을 생략하고 run 해도 됨) ◦ docker run을 하는 경우 : 로컬 시스템에서 먼저 찾음 - 찾..
Dockerfile이란? ◦ Dokerfile을 생성하여 세부적인 명령을 제공 ◦ 이미지에 뭘 넣을 건지 어떤 이미지를 사용할 건지 어떤 코드와 어떤 종속성이 복사될 것인지 npm install과 같은 설정단계가 요구되는지 또 내부 포트를 열어 궁극적으로 외부에서 컨테이너를 다룰 수 있도록 수신대기를 하는 것 ◦ Dockerfile과 docker build는 새 이미지를 빌드 💡 컨테이너 실행 순서 1. Dockerfile 작성 2. terminal - docker build . (새 커스텀 이미지를 생성하되 실행하지 않음) 3. terminal - docker run -p 3000:80 [이미지 이름 or 이미지 아이디] - docker run : 이미지를 기반으로 컨테이너를 실행 - -p : publ..
◦ 소스코드에서 뭔가 변경이 있을 때마다 다시 빌드를 하지 않는 한 변경 사항은 실행 중인 컨테이너에 반영되지 않음 ◦ COPY 명령은 도커 이미지가 생성될 때 폴더의 스냅샷만 복사 ◦ 해당 폴더의 모든 변경사항은 이미지에 반영되지 않으므로 컨테이너도 변경 X ◦ 변경 사항이 있을 때마다 전체 이미지를 리빌드하는 것은 굉장히 비효율적이고 번거로움 ❗ 볼륨과 차이점 볼륨(volume) : - 도커가 관리하고 임의로 생성하기 때문에 위치를 알 수 없음 - 엑세스 불가능 바인드 마운트(bind mount) : - 호스트 머신 상에 매핑될 컨테이너의 경로를 설정(위치를 알 수 있음) - 다수의 컨테이너에서 공유할 수 있음 - 소스코드 자체를 바인드 마운트에 넣을 수 있음 컨테이너는 이를 인식하여 소스코드를 스냅..
◦ 도커가 인식하는 호스트 머신(내 컴퓨터)의 폴더 ◦ 도커 컨테이너 내부의 폴더에 매핑 ◦ 컨테이너에 정의된 경로는 생성된 어떤 볼륨에 매핑 → 호스트 머신 상의 생성된 어떠한 경로로 연결 (도커에서 관리하므로 어떤 폴더인지는 알 수 없음, 엑세스 불가능) ◦ 데이터를 읽고 쓸 수 있음 ◦ 컨테이너 외부에 데이터가 저장되는 것 💡 anonymous volume / named volume (하단에 사용법 참고) ◦ anonymous volum : - 컨테이너가 종료될 때 삭제, 컨테이너가 존재할 때만 데이터도 존재 - 새로운 컨테이너가 생성될 때마다 사용하지 않는 익명 볼륨이 쌓임 → docker volume prune → docker volume rm [볼륨이름] - 컨테이너에 이미 존재하는 특정 데이..