일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Arcylic DNS Proxy
- vite
- nft
- php
- 바안
- 메일서버
- Klaythn
- Server
- NFT 이미지 메이커
- Drupal
- 서버
- Drupal 7.x
- Laravel
- Bin Log
- mariadb
- Drulal
- MYSQL
- DMARC
- 개발환경
- 데이터베이스
- Apache Solr
- 인프라
- Infra
- Solitity
- docker
- Search Api
- #Apache solr
- 인ㄴ공지능
- NFT Image Maker
- Mail Server
- Today
- Total
J-한솔넷
WSL2를 쓰야하나!!! 본문
지난달에 WSL2 + Docker 개발환경이 너무 느리다고 글을 적었는데, 이번에는 다시 WSL2를 이용해야 하는지 고민되는 내용을 적습니다. 다름이 아니라 최근 Laravel
의 자바스크립트 스타일시트 빌드를 위해 NodeJS
를 설치하는데 문제가 생겼습니다. 예전에는 로컬에 NodeJS
를 별도로 설치해서 사용하다가 최근에는 Docker
컨테이너에 포함시켜 이용하고 있습니다. 진행중인 프로젝트의 자바스크립트 패키지를 설치하던 중 아래와 같은 오류가 발생했습니다.
WSL2를 사용하지 않는 Docker 컨테이너
WSL2를 사용하지 않으면 Docker는 Hyper-V 기반에서 컨테이너를 실행되고, bind mount
형태로 공유된 폴더의 경우 심블릭 링크를 만들 수 없고, 리눅스 파일 시스템의 권한 문제에 영향을 받지 않습니다. 아래의 오류 원인은 심블릭 링크를 만들지 못해서 생기는 문제입니다.
# npm install
npm notice
npm notice New major version of npm available! 9.6.7 -> 10.1.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.1.0
npm notice Run npm install -g npm@10.1.0 to update!
npm notice
npm ERR! code EIO
npm ERR! syscall symlink
npm ERR! path ../autoprefixer/bin/autoprefixer
npm ERR! dest /DevHome/sites/the-linko-core/node_modules/.bin/autoprefixer
npm ERR! errno -5
npm ERR! EIO: i/o error, symlink '../autoprefixer/bin/autoprefixer' -> '/DevHome/sites/the-linko-core/node_modules/.bin/autoprefixer'
npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2023-09-14T07_57_37_831Z-debug-0.log
root@e9403db456f8:/DevHome/sites/the-linko-core# exit
exit
WSL2를 사용하는 Docker 컨테이너
Docker는 컨테이너를 리눅스를 위한 윈도우즈 하이 시스템을 이용하여 실행합니다. 이 경우 bind mount
를 이용하여 연결한 폴더에서도 심블릭 링크를 생성할 수 있습니다. 반면에 리늑스 파일 시스템의 권한 부분도 그대로 적용됩니다. 그래서 간혹 저의 개발환경에서 파일을 생성할 수 없다(권한 없음)는 메시지가 출력되기도 합니다.
WSL2를 이용하면 아래와 같이 오류가 발생하지 않습니다. 심블릭 링크를 생성할 수 있기 때문일 것입니다.
# npm install
added 117 packages, and audited 118 packages in 8s
20 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
아래와 같이 심블릭 링크가 생성되어 있는 것을 확인할 수 있습니다.
# ls -al ./node_modules/.bin
total 0
drwxr-xr-x 1 root root 4096 Sep 14 17:29 .
drwxr-xr-x 1 root root 4096 Sep 14 17:29 ..
lrwxrwxrwx 1 root root 32 Sep 14 17:29 autoprefixer -> ../autoprefixer/bin/autoprefixer
lrwxrwxrwx 1 root root 22 Sep 14 17:29 browserslist -> ../browserslist/cli.js
lrwxrwxrwx 1 root root 20 Sep 14 17:29 cssesc -> ../cssesc/bin/cssesc
lrwxrwxrwx 1 root root 22 Sep 14 17:29 esbuild -> ../esbuild/bin/esbuild
lrwxrwxrwx 1 root root 19 Sep 14 17:29 jiti -> ../jiti/bin/jiti.js
lrwxrwxrwx 1 root root 27 Sep 14 17:29 mini-svg-data-uri -> ../mini-svg-data-uri/cli.js
lrwxrwxrwx 1 root root 24 Sep 14 17:29 nanoid -> ../nanoid/bin/nanoid.cjs
lrwxrwxrwx 1 root root 22 Sep 14 17:29 resolve -> ../resolve/bin/resolve
lrwxrwxrwx 1 root root 25 Sep 14 17:29 rollup -> ../rollup/dist/bin/rollup
lrwxrwxrwx 1 root root 22 Sep 14 17:29 sucrase -> ../sucrase/bin/sucrase
lrwxrwxrwx 1 root root 27 Sep 14 17:29 sucrase-node -> ../sucrase/bin/sucrase-node
lrwxrwxrwx 1 root root 25 Sep 14 17:29 tailwind -> ../tailwindcss/lib/cli.js
lrwxrwxrwx 1 root root 25 Sep 14 17:29 tailwindcss -> ../tailwindcss/lib/cli.js
lrwxrwxrwx 1 root root 32 Sep 14 17:29 update-browserslist-db -> ../update-browserslist-db/cli.js
lrwxrwxrwx 1 root root 19 Sep 14 17:29 vite -> ../vite/bin/vite.js
정리
WSL2를 사용하면 파일 입출력 문제로 느려진다는 이야기도 있고, 저도 느리다는 생각이 듧니다. 하지만 리눅스의 특성을 온전히 활용하려면 WSL2을 이용해야 할 듯 합니다. 좀더 편리하게 개발하기 위해 제가 만든 개발환경도 약간 수정을 해야 할 듯 합니다.
'프로그래밍 > PHP' 카테고리의 다른 글
Laravel 용 패키지 만들기, 삽질기 (0) | 2024.06.02 |
---|---|
삽질의 연속 (0) | 2024.04.20 |
메모리 프로파일링? (0) | 2023.11.09 |
ChatGPT를 이용한 코딩? (0) | 2023.10.26 |
나의 API 문서화 전략 (0) | 2023.09.11 |