VSCode의 통합 터미널에서 Docker 내에서 앱을 실행하는 데 사용한 역학
2019년 8월 21일 추가
이 기사의 내용은 낡고 크게 멀리 있습니다.
읽을 필요가 없습니다.
VSCode의 원격 개발을 사용합시다.
htps : // 여기.ゔぃすあ lsつぢお。 코 m / 두 cs / Remote / Remote-Oh r ゔ ぃ w
나는 원격 개발 (linux vm)을 사용하지만 편안합니다.
소개
Windows에 VM을 세우고,
VM의 Docker 컨테이너에서 응용 프로그램을 실행하고 있지만,
· 매번 docker 이미지를 빌드하는 것도 번거롭습니다.
・Windows상에서 편집한 파일을 Linux에 카피하는 것도 귀찮습니다.
・Windows상의 VM이기 때문에, F1로부터의 태스크를 정의할 수 없어 실행이 귀찮게 합니다.
· 매번 docker run이라든지 두드리고 싶지 않다.
라고 하는 고민이 있었습니다.
나 나름대로 해결책을 생각해 보았으므로,
누군가의 도움이 된다고 생각합니다.
Windows와 Linux의 파일 복사가 번거롭습니다.
Windows와 Linux에서 파일을 공유하는 방법은 많이 있다고 생각합니다.
WinSCPを使う。
→いちいちSyncされているかを意識しなければいけないのが面倒かと思った
(実際意識する必要はないかもです。あんまり触ってないです。いい加減ですね。。。)
Linux上にSambaを立てちゃう。
→SambaはSambaで、ファイル作成時の権限の設定してあげないといけなかったり、
SambaのユーザとLinuxのユーザーをマッピングしなければいけなかったりと、
複雑化しそうなので手を出したくなくなった。
vagrantとVirtualBoxでファイル共有設定しちゃう。
→guest additionが入らないことがよくあったので、避けた
여러가지 이유를 붙여 피했지만,
내가 선택한 것은 이것이었다.
dokany+win-sshfs
htps : // 기주 b. 코 m / 마사에 에즈 / 우 흠 shfs
htps : // 기주 b. 코 m / 도칸 - v / 도카 ny
※Dokan의 버전은. 1.1.0.2000으로 한다.
GUI판도 있으므로, 그 경우는, 다른 형태의 Qiita의 기사를 참고로, 인스톨하면 좋다고 생각합니다.
무려 SSH의 접속처에, 드라이브 편지를 할당해,
파일 시스템으로 조작할 수 있습니다!
docker 이미지를 매번 빌드하지 않으면 앱을 실행할 수 없습니다.
파이썬이나 루비와 같은 인터프리터 언어를 작성할 때,
docker 이미지를 빌드 → docker run으로 실행이라는 흐름으로 해 버리고 있어,
인터프리터 언어의 장점을 죽이고 있다고 느꼈습니다.
거기서
・docker 호스트와, 컨테이너로 디스크 공유해 버리면 좋지 않을까?
코드 편집은 docker 호스트에서,
코드의 실행은 컨테이너 안에서 실행하면 좋지 않을까?
· 개발중인 컨테이너는 앱을 감싸지 않고베이스로 정의.
릴리즈 용 컨테이너는 별도로 정의 할 수 없습니까?
라고 생각했습니다.
먼저 컨테이너와 docker 호스트에서 디스크 공유이지만,
-v 옵션을 사용하면 쉽게 할 수 있습니다.
・・・하지만, 그런 긴 커맨드는 칠 수 없고, 기억할 수 없기 때문에,
makefile로 작업을 끊습니다.
makefile 발췌RELEASE_CONTAINER := hogehoge
BASE_CONTAINER := $(RELEASE_CONTAINER)-base
APP_ROOT := /app
CONTAINER_APP_ROOT := /app
MAIN_APPLICATION := entrypoint.sh
# ベースのコンテナは、頻繁に利用、更新されると思ったので、
# 先頭に定義して「make」だけで実行するようにした。
commit: var
docker image build -t $(BASE_CONTAINER) \
--target base \
.
# 試行錯誤中、コンテナの中に入りたいときは沢山ある。
# なんで「make shell」でコンテナの中に入るタスクを定義
shell: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/bin/sh
# いちいち /app/entorypoint.shをコンテナの中で実行するのは面倒なので、
# これも「make run」でタスクをていぎ
run: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/app/entrypoint.sh
# リリース用のコンテナを作る定義
release: var
docker image build -t $(RELEASE_CONTAINER) \
--target release \
.
var:
$(eval ROOT_DIR := $(shell pwd))
그런 다음 기본 컨테이너와 릴리스 용 컨테이너를 분리하기 위해,
멀티 스테이지 빌드를 Dockerfile에 정의
DockerfileFROM alpine:latest as base
RUN apk add python3
RUN pip3 install --upgrade pip
COPY /app/requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt
FROM base as release
COPY /app /app
ENTRYPOINT ["/app/entrypoint.sh"]
멀티 스테이지 빌드 및 docker -v 옵션,
makefile을 구사하면 나름대로 사용하기 쉬워지고,
이하와 같은 형태로 컨테이너에의 액세스가 편해졌다.
[root@localhost hogehoge]# make shell
docker container run -ti \
--network host \
-v /home/hoge_user/develop/hogehoge/app:/app \
--rm hogehoge-base \
/bin/sh
/ #
VSCode에서 makefile에 정의한 태스크를 실행할 수 없습니다.
SSH 접속처의 makefile을 좋은 느낌으로 실행할 수 있다.
그런 편한 것은 찾을 수 없었다.
그래서 VSCode 확장을 도입하고,
통합 터미널에서 즉시 SSH 로그인을 허용하고,
make를 간단하게 실행하기로 했다.
거기서 이용한 것이,
SSHExtention
htps : // 기주 b. 코 m / ゃ 태 ly d d 라치에 v / vs 코데 ㅇ x 텐시 온
이런 느낌으로 컨피그를 쓰면 F1에서 쉽게 SSH 로그인할 수 있다.
"sshextension.serverList": [
{
"name": "hogehogevm",
"host": "192.168.56.100",
"port": 22,
"username": "root",
"privateKey": "C:\\Users\\hoge_user\\develop\\keys\\id_rsa",
"path": "/develop"
},
],
"sshextension.openProjectCatalog": true
끝에
여기까지 한 일로
①VSCodeからSSHFSでマウントした先をディレクトリとして開く
②コードを編集
③F1からSSHでVM接続へのショートカットを呼び出し→SSHでVMにログイン
④VMの中でmake run実行
라는 흐름으로 편집~코드 실행까지 할 수 있게 되었다.
Reference
이 문제에 관하여(VSCode의 통합 터미널에서 Docker 내에서 앱을 실행하는 데 사용한 역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/3364git/items/5c5e6c24f2b793d6e621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Windows에 VM을 세우고,
VM의 Docker 컨테이너에서 응용 프로그램을 실행하고 있지만,
· 매번 docker 이미지를 빌드하는 것도 번거롭습니다.
・Windows상에서 편집한 파일을 Linux에 카피하는 것도 귀찮습니다.
・Windows상의 VM이기 때문에, F1로부터의 태스크를 정의할 수 없어 실행이 귀찮게 합니다.
· 매번 docker run이라든지 두드리고 싶지 않다.
라고 하는 고민이 있었습니다.
나 나름대로 해결책을 생각해 보았으므로,
누군가의 도움이 된다고 생각합니다.
Windows와 Linux의 파일 복사가 번거롭습니다.
Windows와 Linux에서 파일을 공유하는 방법은 많이 있다고 생각합니다.
WinSCPを使う。
→いちいちSyncされているかを意識しなければいけないのが面倒かと思った
(実際意識する必要はないかもです。あんまり触ってないです。いい加減ですね。。。)
Linux上にSambaを立てちゃう。
→SambaはSambaで、ファイル作成時の権限の設定してあげないといけなかったり、
SambaのユーザとLinuxのユーザーをマッピングしなければいけなかったりと、
複雑化しそうなので手を出したくなくなった。
vagrantとVirtualBoxでファイル共有設定しちゃう。
→guest additionが入らないことがよくあったので、避けた
여러가지 이유를 붙여 피했지만,
내가 선택한 것은 이것이었다.
dokany+win-sshfs
htps : // 기주 b. 코 m / 마사에 에즈 / 우 흠 shfs
htps : // 기주 b. 코 m / 도칸 - v / 도카 ny
※Dokan의 버전은. 1.1.0.2000으로 한다.
GUI판도 있으므로, 그 경우는, 다른 형태의 Qiita의 기사를 참고로, 인스톨하면 좋다고 생각합니다.
무려 SSH의 접속처에, 드라이브 편지를 할당해,
파일 시스템으로 조작할 수 있습니다!
docker 이미지를 매번 빌드하지 않으면 앱을 실행할 수 없습니다.
파이썬이나 루비와 같은 인터프리터 언어를 작성할 때,
docker 이미지를 빌드 → docker run으로 실행이라는 흐름으로 해 버리고 있어,
인터프리터 언어의 장점을 죽이고 있다고 느꼈습니다.
거기서
・docker 호스트와, 컨테이너로 디스크 공유해 버리면 좋지 않을까?
코드 편집은 docker 호스트에서,
코드의 실행은 컨테이너 안에서 실행하면 좋지 않을까?
· 개발중인 컨테이너는 앱을 감싸지 않고베이스로 정의.
릴리즈 용 컨테이너는 별도로 정의 할 수 없습니까?
라고 생각했습니다.
먼저 컨테이너와 docker 호스트에서 디스크 공유이지만,
-v 옵션을 사용하면 쉽게 할 수 있습니다.
・・・하지만, 그런 긴 커맨드는 칠 수 없고, 기억할 수 없기 때문에,
makefile로 작업을 끊습니다.
makefile 발췌RELEASE_CONTAINER := hogehoge
BASE_CONTAINER := $(RELEASE_CONTAINER)-base
APP_ROOT := /app
CONTAINER_APP_ROOT := /app
MAIN_APPLICATION := entrypoint.sh
# ベースのコンテナは、頻繁に利用、更新されると思ったので、
# 先頭に定義して「make」だけで実行するようにした。
commit: var
docker image build -t $(BASE_CONTAINER) \
--target base \
.
# 試行錯誤中、コンテナの中に入りたいときは沢山ある。
# なんで「make shell」でコンテナの中に入るタスクを定義
shell: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/bin/sh
# いちいち /app/entorypoint.shをコンテナの中で実行するのは面倒なので、
# これも「make run」でタスクをていぎ
run: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/app/entrypoint.sh
# リリース用のコンテナを作る定義
release: var
docker image build -t $(RELEASE_CONTAINER) \
--target release \
.
var:
$(eval ROOT_DIR := $(shell pwd))
그런 다음 기본 컨테이너와 릴리스 용 컨테이너를 분리하기 위해,
멀티 스테이지 빌드를 Dockerfile에 정의
DockerfileFROM alpine:latest as base
RUN apk add python3
RUN pip3 install --upgrade pip
COPY /app/requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt
FROM base as release
COPY /app /app
ENTRYPOINT ["/app/entrypoint.sh"]
멀티 스테이지 빌드 및 docker -v 옵션,
makefile을 구사하면 나름대로 사용하기 쉬워지고,
이하와 같은 형태로 컨테이너에의 액세스가 편해졌다.
[root@localhost hogehoge]# make shell
docker container run -ti \
--network host \
-v /home/hoge_user/develop/hogehoge/app:/app \
--rm hogehoge-base \
/bin/sh
/ #
VSCode에서 makefile에 정의한 태스크를 실행할 수 없습니다.
SSH 접속처의 makefile을 좋은 느낌으로 실행할 수 있다.
그런 편한 것은 찾을 수 없었다.
그래서 VSCode 확장을 도입하고,
통합 터미널에서 즉시 SSH 로그인을 허용하고,
make를 간단하게 실행하기로 했다.
거기서 이용한 것이,
SSHExtention
htps : // 기주 b. 코 m / ゃ 태 ly d d 라치에 v / vs 코데 ㅇ x 텐시 온
이런 느낌으로 컨피그를 쓰면 F1에서 쉽게 SSH 로그인할 수 있다.
"sshextension.serverList": [
{
"name": "hogehogevm",
"host": "192.168.56.100",
"port": 22,
"username": "root",
"privateKey": "C:\\Users\\hoge_user\\develop\\keys\\id_rsa",
"path": "/develop"
},
],
"sshextension.openProjectCatalog": true
끝에
여기까지 한 일로
①VSCodeからSSHFSでマウントした先をディレクトリとして開く
②コードを編集
③F1からSSHでVM接続へのショートカットを呼び出し→SSHでVMにログイン
④VMの中でmake run実行
라는 흐름으로 편집~코드 실행까지 할 수 있게 되었다.
Reference
이 문제에 관하여(VSCode의 통합 터미널에서 Docker 내에서 앱을 실행하는 데 사용한 역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/3364git/items/5c5e6c24f2b793d6e621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
WinSCPを使う。
→いちいちSyncされているかを意識しなければいけないのが面倒かと思った
(実際意識する必要はないかもです。あんまり触ってないです。いい加減ですね。。。)
Linux上にSambaを立てちゃう。
→SambaはSambaで、ファイル作成時の権限の設定してあげないといけなかったり、
SambaのユーザとLinuxのユーザーをマッピングしなければいけなかったりと、
複雑化しそうなので手を出したくなくなった。
vagrantとVirtualBoxでファイル共有設定しちゃう。
→guest additionが入らないことがよくあったので、避けた
파이썬이나 루비와 같은 인터프리터 언어를 작성할 때,
docker 이미지를 빌드 → docker run으로 실행이라는 흐름으로 해 버리고 있어,
인터프리터 언어의 장점을 죽이고 있다고 느꼈습니다.
거기서
・docker 호스트와, 컨테이너로 디스크 공유해 버리면 좋지 않을까?
코드 편집은 docker 호스트에서,
코드의 실행은 컨테이너 안에서 실행하면 좋지 않을까?
· 개발중인 컨테이너는 앱을 감싸지 않고베이스로 정의.
릴리즈 용 컨테이너는 별도로 정의 할 수 없습니까?
라고 생각했습니다.
먼저 컨테이너와 docker 호스트에서 디스크 공유이지만,
-v 옵션을 사용하면 쉽게 할 수 있습니다.
・・・하지만, 그런 긴 커맨드는 칠 수 없고, 기억할 수 없기 때문에,
makefile로 작업을 끊습니다.
makefile 발췌
RELEASE_CONTAINER := hogehoge
BASE_CONTAINER := $(RELEASE_CONTAINER)-base
APP_ROOT := /app
CONTAINER_APP_ROOT := /app
MAIN_APPLICATION := entrypoint.sh
# ベースのコンテナは、頻繁に利用、更新されると思ったので、
# 先頭に定義して「make」だけで実行するようにした。
commit: var
docker image build -t $(BASE_CONTAINER) \
--target base \
.
# 試行錯誤中、コンテナの中に入りたいときは沢山ある。
# なんで「make shell」でコンテナの中に入るタスクを定義
shell: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/bin/sh
# いちいち /app/entorypoint.shをコンテナの中で実行するのは面倒なので、
# これも「make run」でタスクをていぎ
run: var
docker container run -ti \
--network host \
-v $(ROOT_DIR)$(APP_ROOT):$(CONTAINER_APP_ROOT) \
--rm $(BASE_CONTAINER) \
/app/entrypoint.sh
# リリース用のコンテナを作る定義
release: var
docker image build -t $(RELEASE_CONTAINER) \
--target release \
.
var:
$(eval ROOT_DIR := $(shell pwd))
그런 다음 기본 컨테이너와 릴리스 용 컨테이너를 분리하기 위해,
멀티 스테이지 빌드를 Dockerfile에 정의
Dockerfile
FROM alpine:latest as base
RUN apk add python3
RUN pip3 install --upgrade pip
COPY /app/requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt
FROM base as release
COPY /app /app
ENTRYPOINT ["/app/entrypoint.sh"]
멀티 스테이지 빌드 및 docker -v 옵션,
makefile을 구사하면 나름대로 사용하기 쉬워지고,
이하와 같은 형태로 컨테이너에의 액세스가 편해졌다.
[root@localhost hogehoge]# make shell
docker container run -ti \
--network host \
-v /home/hoge_user/develop/hogehoge/app:/app \
--rm hogehoge-base \
/bin/sh
/ #
VSCode에서 makefile에 정의한 태스크를 실행할 수 없습니다.
SSH 접속처의 makefile을 좋은 느낌으로 실행할 수 있다.
그런 편한 것은 찾을 수 없었다.
그래서 VSCode 확장을 도입하고,
통합 터미널에서 즉시 SSH 로그인을 허용하고,
make를 간단하게 실행하기로 했다.
거기서 이용한 것이,
SSHExtention
htps : // 기주 b. 코 m / ゃ 태 ly d d 라치에 v / vs 코데 ㅇ x 텐시 온
이런 느낌으로 컨피그를 쓰면 F1에서 쉽게 SSH 로그인할 수 있다.
"sshextension.serverList": [
{
"name": "hogehogevm",
"host": "192.168.56.100",
"port": 22,
"username": "root",
"privateKey": "C:\\Users\\hoge_user\\develop\\keys\\id_rsa",
"path": "/develop"
},
],
"sshextension.openProjectCatalog": true
끝에
여기까지 한 일로
①VSCodeからSSHFSでマウントした先をディレクトリとして開く
②コードを編集
③F1からSSHでVM接続へのショートカットを呼び出し→SSHでVMにログイン
④VMの中でmake run実行
라는 흐름으로 편집~코드 실행까지 할 수 있게 되었다.
Reference
이 문제에 관하여(VSCode의 통합 터미널에서 Docker 내에서 앱을 실행하는 데 사용한 역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/3364git/items/5c5e6c24f2b793d6e621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"sshextension.serverList": [
{
"name": "hogehogevm",
"host": "192.168.56.100",
"port": 22,
"username": "root",
"privateKey": "C:\\Users\\hoge_user\\develop\\keys\\id_rsa",
"path": "/develop"
},
],
"sshextension.openProjectCatalog": true
①VSCodeからSSHFSでマウントした先をディレクトリとして開く
②コードを編集
③F1からSSHでVM接続へのショートカットを呼び出し→SSHでVMにログイン
④VMの中でmake run実行
Reference
이 문제에 관하여(VSCode의 통합 터미널에서 Docker 내에서 앱을 실행하는 데 사용한 역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/3364git/items/5c5e6c24f2b793d6e621텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)