2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerリソースとコードを同じリポジトリ管理にしてもコンテナにアタッチしたVSCodeからgit操作したい

Last updated at Posted at 2024-01-06

はじめに

Dockerリソースとコードが同じリポジトリ管理になっている場合にVSCodeのDevContainerを使う時に、こんなことできたらいいのになぁ...がとりあえず達成できたので覚書です。

Dockerリソースとコードを同じリポジトリ管理にしてVSCodeのDevContainerを使うことで対峙した問題点

VSCodeからgitを利用する場合、VSCodeで開いているディレクトリ配下の.gitを参照することで使うことができます。
しかしながら、Dockerリソースとコードを同じリポジトリで管理し、コードをアプリケーション用のコンテナにマウントしてそのコンテナにVSCodeをアタッチして使用する場合、.gitはコンテナ側に無いため、VScode上からgit操作することができず、ホストマシンからgit操作をする等で対応する必要がありました。

(Docker(インフラ)関連を管理するリポジトリと、コードを管理するリポジトリを分ければいい話ではあると思いますが、それも面倒だったため解決させる方法が無いか探していました。)

イメージ的には下記のような感じです。

名称未設定ファイル-ページ1のコピーのコピー.drawio.png

docker-compose.ymlサンプル
version: "3.8"

services:
  php:
    build:
      context: .
      dockerfile: Docker/php/Dockerfile
    volumes:
      - ./src:/var/www/html

↓VSCodeで開いているディレクトリ配下に.gitが無いため、gitを使うことができない
image.png

解決策

概要

コンテナの適当なディレクトリにリポジトリのルートディレクトリごとマウントさせて
コードの格納ディレクトリをシンボリックリンクを貼ることで対応します。

名称未設定ファイル-ページ1のコピー.drawio (1).png

詳細

まずdocker-compose.yml等でリポジトリのルートディレクトリを適当なディレクトリ(今回は/usr/local/src配下とします)にマウントさせておきます。

docker-compose.ymlサンプル
version: "3.8"

services:
  php:
    build:
      context: .
      dockerfile: Docker/php/Dockerfile
    volumes:
      - ./:/usr/local/src   ### プロジェクトルートごと/usr/local/srcにマウントさせる

続いてシンボリックリンクの設定をします
※シンボリックリンクを設定する先は各プロジェクトごと適切な位置に読み直してください

シンボリックリンク設定
### 先に/var/www/htmlディレクトリが存在するので削除
$ rm -rf /var/www/html
$ ln -sb /usr/local/src/src/ /var/www/html

この例の場合、Dockerfileで以下のようにしておくのも可

RUN rm -rf /var/www/html \
  && ln -sb /usr/local/src/src/ /var/www/html

この状態で、VSCodeで開くディレクトリは/usr/local/srcを開いておくことで、開いたディレクトリ直下に.gitがある状態になるので、VSCodeからgitの操作ができるようになります。
image.png

おわりに

途中参画したプロジェクトでVSCodeだけで実装→git操作まで完結できるといいのになぁ...と悩んでいたところ、なんとか対応できて快適になりました!

自分の中でなんとなくこんな感じでいいかな?ぐらいの感じではありますので、
他にいい案等ありましたらコメント等お待ちしております:bow:

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?