作成: 2020年08月16日
更新: 2021年04月24日
VSCodeのRemote Containers拡張ではVSCodeを起動するだけでそのディレクトリ内のDockerfileに従ってDockerを起動し,あたかもローカルで作業しているようにDocker内で作業することができ,ローカルの環境を汚さずに新しい環境を気軽に試せる.
ここではRemote Containers拡張の導入は割愛するが,Remote Containers拡張をそのまま使うとローカルの.bash_profileやらのいわゆるdotfilesが引き継がれずalias等をローカルと同等に使用できない.
そこでVSCodeでは設定でGitで管理しているdotfilesをDockerコンテナ作成時にコピーすることができる.
(https://code.visualstudio.com/docs/remote/containers#_personalizing-with-dotfile-repositories)
以下のように設定からDockerコンテナ作成時に実行するスクリプト,dotfilesのリポジトリ,リポジトリをCloneする場所を指定できる.
自分の場合はDockerコンテナ作成時に以下のスクリプトを実行し,.bash_profileのシンボリックリンクを作成している.
#!/bin/sh
ln -sf ~/dotfiles/devcontainer/.bash_profile ~/.bash_profile
なお.gitconfigに関してはデフォルトでローカルのものがコピーされるので引き継ぐ必要はない.
また install.sh not executable や Permission denied でDockerコンテナ作成時に実行するスクリプトが実行されないことがある.これはGitリポジトリにpushする際にデフォルトでファイルのPermissionが644にされてしまうためである.
実行したいスクリプトに対して以下を実行して実行権限を付与してからpushすると実行できるようになる.
git update-index --add --chmod=+x [filename]
ベースイメージによってはdotfilesのcloneができないときがある.この場合gitのpushなどもできない.debianベースのイメージならば以下のようにDockerfileでca-certificatesをインストールすれば問題は解消される.
node イメージの例
DockerfileFROM node:14.16.1-slim
RUN apt update \
&& apt install -y --no-install-recommends \
apt-utils \
git \
ca-certificates \
procps \
&& apt autoremove -y \
&& apt clean -y \
&& rm -rf /var/lib/apt/lists/*