2
6

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.

C言語の開発環境をDockerで作る with VisualStudioCode

Posted at

リポジトリ

このリポジトリでは下記手順に加えて自動化バッチファイルも作成してあります。パスを変えて使用してください。

環境

・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だけなのでそれ以外はお好みで。

Dockerfile
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フォルダにマウントします。

docker-compose.yml
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を作成する。

hello.c
include <stdio.h>

int main(void){
    printf("Hello,World!");
    return 0;
}

ターミナルでgccコマンドを実行

bash
gcc -o heloo hello.c

helloというファイルが作成されればコンパイル成功。
ターミナルで

bash
./hello

を実行して、ターミナルに「Hello,World!」と表示されれば実行成功です。

これで開発環境の構築は終了です。

2
6
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
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?