リポジトリ
このリポジトリでは下記手順に加えて自動化バッチファイルも作成してあります。パスを変えて使用してください。
環境
・Windows11 21H2(ローカルOS)
・Ubuntu 22.10(コンテナ)
・Docker Desktop 20.10.14
・VisualStudioCode 1.70.0
構想
Dockerfile+docker-compose.ymlでコンテナを構築する。
構築したコンテナにローカルOSのVSCodeからアタッチする。
ファイル構成
c-env
├── .devcontaienr
│ └── devcontainer.json
├── src(ここにソースファイルを置く)
├── docker-compose.yml
└── Dockerfile
コンテナ構築
Dockerfile
C言語開発環境に最低限必要なのは、build-essentialとgdbだけなのでそれ以外はお好みで。
FROM ubuntu:22.10
#コンテナにsudo権限を持つユーザを作成
ARG DOCKER_UID=1000
ARG DOCKER_USER=docker
ARG DOCKER_PASSWORD=docker
RUN useradd -m -s /bin/bash --uid ${DOCKER_UID} --groups sudo ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
USER ${DOKCER_USER}
#コンテナ構築時に実行
RUN apt-get update && \
apt-get install -y git build-essential cmake clang nano gdb
docker-compose.yml
ローカルOSのsrcフォルダをコンテナのc-devフォルダにマウントします。
version: '3'
services:
dev:
build: .
container_name: c-env
volumes:
- ./src:/c-dev
tty: true
user: "1000:1000"
上記2つのファイルを使用してコンテナを構築します。
任意のシェルでdocker-compose.ymlがあるファイル(ここではc-env)に移動し、下記コマンドを実行します。
docker-compose up
処理が終了すればコンテナの構築は終了です。
コンテナにローカルOSのVSCodeでアタッチ
ここからはローカルOSのVSCodeでの操作になります。
VSCodeの拡張機能である「Remote -Containers」を使用してコンテナにアタッチします。
「Remote -Containers」をインストールすると左にリモートエクスプローラのアイコンが表示されるのでクリックし遷移します。
Dev Containersに先程作成したコンテナがあるのでフォルダのマークをクリックするとコンテナへアタッチできます。
動作テスト
hello.cを作成する。
include <stdio.h>
int main(void){
printf("Hello,World!");
return 0;
}
ターミナルでgccコマンドを実行
gcc -o heloo hello.c
helloというファイルが作成されればコンパイル成功。
ターミナルで
./hello
を実行して、ターミナルに「Hello,World!」と表示されれば実行成功です。
これで開発環境の構築は終了です。