Dev/Docker

Dev/Docker

[Docker] Dockerfile의 COPY와 리눅스 cp의 차이

Dockerfile의 COPY와 Linux의 cp명령어는 복사하는 기능은 똑같지만, 폴더를 풀고 넣느냐 아니냐의 차이점이 있다. Docker의 COPY : 복사하려는 디렉토리를 포함하지 않고 복사 Linux의 cp : 복사하려는 디렉토리까지 포함해서 복사 이게 무슨 말일까..? 예를 들어 알아보자, 아래와 같은 Dockerfile이 있다고 할 때, ./src/game폴더에서 ./origin2로 옮기는 경우, game폴더가 풀어져서 game폴더 안에 존재하는, controller만 도커 이미지 경로로 전달이 된다. 결과로, 아래와 같이 도커 이미지 안에 들어가서 경로로 확인해보면, controller만 들어가 있는걸 확인할 수 있다. 반대로, 리눅스에서 cp를 사용하는 경우, 폴더가 풀어지지 않고 복사하려..

Dev/Docker

[Docker] Jasypt 이용해 암호화시 docker-compose.yml에 .env파일로 변수관리 하기

application.yml 파일에 중요한 개인정보나 AWS 정보가 들어있다면 보안에 매우 취약합니다! 예를 들어 다음과 같이 S3를 사용할 때 access-key와 secret-key가 깃허브에 올라간다면, 누군가 언제든지 접근을 할 수 있게됩니다. 따라서 이를 막고자, 필자는 S3뿐만 아니라 다른 개인정보들도 보호하고 싶어서 Jasypt 라이브러리를 사용해 암호화를 진행했습니다. Jasypt에 관한 내용은 아래 블로그를 참조했고, 여기서는 설명하지 않겠습니다. https://velog.io/@rnjsals1575/Jasypt%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%AF%BC%EA%B0%90%EC%A0%95%EB%B3%B4-%EC%95%94%ED%98%B8%ED%99%..

Dev/Docker

[Docker] Docker 바인드마운트 사용해 파일 저장하기(vs 볼륨마운트)

단순 Docker를 사용하는 서버 환경에서 바인드마운트, 볼륨마운트를 사용하지 않고 DB의 File 테이블을 이용해 key값을 저장한다고 가정하고 컨테이너를 내리면 어떻게 될까요? DB의 File 테이블에는 key값이 저장되는데 실제로 파일은 없게 됩니다. 따라서, Docker를 사용할 땐 바인드 마운트와 볼륨 마운트에 대해 이해하는 것이 무엇보다 중요합니다! Docker 컨테이너에 쓰여진 데이터는 기본적으로 컨테이너가 삭제될 때 함께 사라집니다! 따라서 Docker에서는 데이터를 저장하기 위해 볼륨마운트와 바인드마운트라는 옵션을 제공하는데, 볼륨마운트와 바인드마운트의 차이점은 Docker가 마운트 포인트를 관리해주느냐 아니냐의 차이입니다! 프로젝트를 예로 들어 알아보겠습니다! 필자의 docker-com..

Dev/Docker

[Docker] Docker TimeZone설정(UTC -> KTC)

스프링부트 프로젝트를 배포했는데, 타임스탬프 출력시 UTC로 자꾸 출력이 되는 걸 확인할 수 있었다. 무엇이 문제일까 고민하는 과정에서 여러가지를 시도해보았다. 위와 같은 코드를 main함수와 같은 레벨에 작성해봤는데, 개발 환경에서는 문제없었으나 운영 환경에서는 여전히 UTC를 사용하고 있었다. 리눅스 서버의 타임존을 KTC로 변경해도 마찬가지로 UTC의 시간이 출력되었다. 하지만 필자의 운영서버는 위의 그림과 같이 구성되고 있다. 스프링부트의 타임존을 변경하든 리눅스의 타임존을 변경하든, Docker Container를 이용하고 있기 때문에 타임존은 그대로 UTC였던 것을 확인할 수 있었다. 이를 해결하기 위해 docker-compose.yml파일의 스프링부트 environment부분에서 TZ을 위의..

Dev/Docker

[Docker] Docker(도커)란? 도커가 나오게 된 배경은?

Docker란? 컨테이너 기반의 오픈소스 가상화 플랫폼으로, 가장 대표적인 컨테이너 기술이다. Docker가 나오게 된 배경? 기존의 방식으로 나만의 앱을 만든다고 가정하면, 예를 들어 내컴퓨터의 운영체제에 안드로이드 앱, 웹서버, 데이터베이스가 깔리게된다. 하지만 이렇게 되면, 오류가 많아지고 신경써야할 게 많아진다. 그래서, 운영체제별로 각각의 안드로이드 앱, 웹 서버, 데이터베이스를 제공하면 어떨까? 라는 생각을 하게 되고 이것이 가상머신이다. 하나의 컴퓨터에 가상화를 통해 운영체제 각각마다 웹서버, 데이터베이스를 설치하는 방법을 생각하게 되는 것이다. 하지만, 가상머신을 사용한다면, 운영체제위에 운영체제가 있다보니 실행속도도 너무느려지게 된다. 한대의 컴퓨터 안에서 각각의 웹서버든 데이터베이스서버..

friendshipkim97
'Dev/Docker' 카테고리의 글 목록