Sangil's blog

https://github.com/ChoiSangIl Admin

docker-compose up no cache(캐쉬) DEV / DOCKER

2020-06-19 posted by sang12


docker-compose를 이용하여 배포를 할때, docker-compose의 내용이 바뀌지 않거나, 특정 변화가 없다고 판단될때 캐쉬처리된 이미지가 올라가거나, 아에 올라가지 않을때가있다.

war파일을 배포할때나 경우에 따라서는 강제적으로 이미지를 생성해야 될 때가 있는데, 그럴떄는 --force-recreate명령어를 사용하여 생성하면 된다.

docker-compose up -d --force-recreate

REPLY

Docker 사용자 계정에서 실행 안될 때 DEV / DOCKER

2020-06-19 posted by sang12


Docker를 루트에서 설정하고, 사용자 계정에서 실행하려고 하는데 실행이 안된다..

/run/docker.sock 파일의 그룹을 docker로 지정하고. docker 명령어를 사용하려는 계정 docker 그룹을 추가해주자.

#docker
REPLY

Docker 외부 Volume설정시, 유저 권한 문제 (permission denied) DEV / DOCKER

2020-06-15 posted by sang12


일반적으로, Docker에서 로그 정보나 데이터성 정보들을 보관하기 위해, Volum을 이용해 Host 계정에 데이터를 연동하게 된다.

이때 Root 계정으로 사용하면 상관이 없지만, User 계정으로 사용할시 권한문제가 발생 할 수 있다.

왜냐하면 Docker는 기본적으로 User를 설정안하고 이미지를 올리게되면 Root 계정으로 파일을 쓰게된다. 

예를 들어 User1이라는 계정에서 톰캣 컨테이너를 올렸고, 톰캣 로그를 User1 계정 Volume에 연결했다고 하자, 이때 아무런 설정을 안하게 되면 User1 로그 파일이 Root권한으로 만들어져, User1계정에서는 접근하지 못하는 상황이 발생하게 된다 :).

내 계정에서 컨테이너를 올렸는데, 로그를 못본다니요..

그래서 해당 상황을 피하기 위해선, user 명령어를 통해, uid와 gid값을 셋팅해주는 방법이있다.

실제로 한번 해보자! 아래 tomcat의 webapps를 외부 volume로 지정한 docker-compose 명세가 있다. 그리고 user라는 명령어를 통해 환경변수 USER_ID와 GROUP_ID를 지정해주었다. user: "1002:1002"와 같이 써도 무방하다 . 그리고 docker-compose up -d 명령어를 쳐서 만들어진 webapps 권한을 조회하면 내가 설정한 uid, gid로 파일이 저장된것을 볼 수 있다. user를 지정해주지 않으면 root로 만들어지게 된다.

-docker-compose.yml

version: '3.8'
services:
  tomcat1:
    container_name: tomcat1
    image: tomcat:8.5.46-jdk8-openjdk
    ports:
      - "9091:8080"
    volumes:
     - ./vol/webapps/:/usr/local/tomcat/webapps/
    user: "${USER_ID}:${GROUP_ID}"

환경변수 설정 /home/사용자계정/.bash_profile

#아랫부분에 추가 
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)
#docker #docker 권한 문제
REPLY