code-server사용하려는데 workspace가 안잡힙니다
안녕하세요
vscode를 서버에 올려두고 사용할 수 있는 방법이 있다해서 도커로 code-server를 올렸습니다
npm사용중이라 외부포트 바꿔주고 볼륨항목에 설정값이랑 작업공간 경로 설정해주고 실행하면 경로가 제대로 안잡혔는지 workspace를 잡아달라고 합니다..
문제는 code-server 웹에서 잡아주려고해도 잡아주려는 폴더는 /home/계정명/work 폴더인데 /home폴더에서 더 뜨질 않습니다.. 뭐가 문제일까요?
아래는 yaml 원문입니다
version: "2.1"
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- PASSWORD=PASSWORD #optional
- HASHED_PASSWORD= #optional
- SUDO_PASSWORD=password #optional
- SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional
volumes:
- /home/USER/docker/docker-compose/code-server/config:/config
- /home/USER/work:/config/workspace
ports:
- 8888:8443
restart: unless-stopped
/home이 아예 존지하지않을수도있습니다.
경로 잡아달라고 떠서 먼저 확인 누르면 이렇게 뜹니다
보시다시피 work폴더가 뜨질 않고 ...을 눌러 상위 폴더로 나가면
/home으로 가지는게 아니라 /USER 이런식으로 루트?폴더로 나가집니다..
그냥 /home/USER 저 폴더를 작업폴더로 잡으려해도 존재하는 경로로 설정해달라면서 설정도 안되네요..
컨테이너 내부 매핑이 /config/workspace 로 되어있는데
해당 부분도 없다는 말씀이실까요?
호스트에서 보면 /home/USER 이겠지만
codeserver 컨테이너에서보면 /config/workspace 입니다
죄송하지만 물어보신 부분이 volumes:부분의 ~:/config/workspace 부분 맞을까요?
그 부분이라면 존재하는 것 같습니다
yaml파일이 /home/USER/docker/docker-compose/code-server/~.yaml에 위치하고
workspace폴더는 /home/USER/docker/docker-compose/code-server/config/workspace에 위치해있습니다
이게 아니라 environment: 부분의 DEFAULT_WORKSPACE부분을 말씀하시는거라면
cd /을 치고 ls -a 명령어를 쳤을 때 config파일부터 존재하지 않는데 이게 문제일까요?
물론 저는 code-server가 기본적으로 /home/USER/work/를 기본 경로로 잡고싶습니다..
(리눅스랑 도커를 몇 번 써보지 못해서 개념이해가 덜 된 것 같습니다 죄송해요 ㅜㅜ)
/home/USER/docker/docker-compose/code-server/config:/config
아예 기본 DEFAULT WORKSPACE부터 다른경로로 지정하고 다시 매핑해보면 어떨까요??
도커의 생성 방식 상 (정확한 설명은 아니지만) OS 안에 또 다른 리눅스를 설치하는 것이기 때문에 도커 컨테이너 내에서는 기본적으로 호스트 OS의 파일에 접근하지 못합니다.
여기서 등장하는 게 볼륨 매핑입니다. (docker-compose.yml 파일의 volumes 부분)
컨테이너 내에서 호스트의 /home/USER/work 폴더에 접근하고 싶을 때 위에서 하신 설정대로
- /home/USER/work:/config/workspace
이렇게 작성하시면 "호스트의 /home/USER/work 폴더를 컨테이너 내의 /config/workspace 폴더에 마운트하겠다"라는 말이 됩니다. 따라서 code-server 내에서 /home/USER/work 폴더에 접근하시려면 위에서 설정하신 대로 /config/workspace 폴더를 오픈하시거나 아예 도커 설정을
- /home/USER/work:/home/USER/work
이런 식으로 경로를 같게 만드시면 됩니다.
추가로 환경 변수에 HASHED_PASSWORD, SUDO_PASSWORD_HASH 같이 사용하지 않는 값들은 줄 맨 앞에 #을 붙여서 주석으로 만들어 주셔야 합니다.
제가 잘 이해한지 모르겠는데 /home/USER/work:/config/workspace이렇게 yaml로 작성하고 코드서버에서는 작업경로를 /config/workspace에 잡아야 작업한 파일들이 /home/USER/work에 남는다고 생각하는게 맞을까요?
또한 컨테이너 내의 /config/workspace를 호스트 입장에서 봤을땐 (/home/USER/docker/docker-compose/code-server)/config/workspace이렇게 설정되는것인지 아니면 가장 상위 디렉터리에서 /config/workspace로 코드서버에서 잡아주는게 맞는지 궁금합니다...
도커를 따로 공부하지 않고 게시글 등으로만 활용해보려니 역시 힘드네요
공부 좀 해봐야겠습니다...
/home/USER/work:/config/workspace이렇게 yaml로 작성하고 코드서버에서는 작업경로를 /config/workspace에 잡아야 작업한 파일들이 /home/USER/work에 남는다고 생각하는게 맞을까요?
네 정확합니다.
또한 컨테이너 내의 /config/workspace를 호스트 입장에서 봤을땐 (/home/USER/docker/docker-compose/code-server)/config/workspace이렇게 설정되는것인지 아니면 가장 상위 디렉터리에서 /config/workspace로 코드서버에서 잡아주는게 맞는지 궁금합니다...
지금 볼륨 매핑이 조금 신기하게 되어 있는데,
- /home/USER/docker/docker-compose/code-server/config:/config
- /home/USER/work:/config/workspace
호스트의 폴더가 /config에 마운트되어 있는데 그 안에 또 다른 호스트 폴더가 마운트되어 있는 상황입니다. 이 경우 실제 호스트 폴더에도 workspace라는 폴더가 생기긴 하는데 그 안에는 아무것도 존재하지 않습니다. 하지만 컨테이너 내부에선 저 workspace 폴더에 /home/USER/work 폴더가 마운트되어 있으므로 work 폴더 안의 파일이 보입니다.
결과적으론, code-server 내부에선 (최상위 폴더) /config/workspace 경로로 잡아주는 게 맞습니다.
그런데 차라리 code-server/config 폴더를 컨테이너 내의 /config 폴더에, /home/USER/work 폴더를 /workspace 폴더에 마운트하시고 code-server에서 /workspace 폴더를 작업 공간으로 지정하시는 게 어떨까요?
- /home/USER/docker/docker-compose/code-server/config:/config
- /home/USER/work:/workspace
이렇게요. 글에 써져 있는 설정을 제가 테스트해본 결과 큰 문제는 없었지만 나중에 이해하시기 어려울 수도 있고, 중첩된 마운트에서 문제가 발생하지 않는다는 보장도 없으니 안전하게 이 방법이 좋을 것 같습니다.
아 이미 마운트된 폴더 내부에 또다른 마운트는 별로 좋지 않은 방법인가 보군요.. 감사합니다!
답변주신대로 code-server폴더 내부에 각각 config, works폴더에 2개 볼륨 마운트를 해주도록 수정했습니다
하지만 문제는 아직도 그대로인 거 같아요...
위 이미지와 같이 저렇게 /home/USER과 함께 뜨지만 아무 폴더도 뜨지 않고 ...을 눌러 상위폴더로 나가봐도 /home으로 나가지는게 아닌 /USER로 표기만되고 가장 상위 디렉터리로 이동하는 거 같은데 혹시 권한과 관련돼있을까요?
docker를 설치할 때 sudo명령어를 사용하지 않아도 되게끔 설정했고 제 puid와 guid또한 1000인것도 확인하긴 했습니다..
아 그렇다면 최상위폴더에 있는 /workspace폴더로 들어가면 되는거군요
/workspace로 들어가서 경로 지정을 하려해도 계속 존재하는 경로로 지정해달라하길래 혹시나하고 고정적으로 마지막에 적혀있던 제 계정명의 폴더를 지우고 지정하니 바로 되네요..ㅠㅠ
할 작업은 많고 게속 원격 데스크탑으로 접속하는것도 힘들었는데 다음 프로젝트를 할 때는 이걸 이용해봐야겠습니다
자꾸 질문해서 번거우셨을텐데 정말 감사합니다!!
cmt alert