1
1

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 3 years have passed since last update.

GitHubにあるコードをDockerのubuntu環境で試す

Last updated at Posted at 2021-12-10

やりたいこと

Dockerをつかって、ubuntuでプログラムを実行したい!というあなた向け。
GitHubからコードをクローンして、ubuntu環境で試せます。コードを変更したりしても残せるようにします。

この記事の方法はかなりいけてないので、できれば、最後に初めにを読んでほしい。

環境

MacOS 12.0.1
Docker Engine v20.10.11

準備

ソースコード

docker-compose.yml
version: '3'
services:
  ubuntu:
    container_name: "ssh-keygen"
    hostname: ubuntu
    build: ./
    tty: true
Dockerfile
FROM ubuntu:20.04

ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
        echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install -y openssh-server

SSHキーを作成するコンテナの作成

まずDockerでSSHキー作成用のコンテナを作成して、SSHの鍵を作成していきます。
ワーキングディレクトリの下に上記のファイルを作成します。

次に以下のコマンドを実行してコンテナを作成し、コンテナ内のシェルを起動します。

ホストマシン
$ docker-compose up -d # コンテナ作成
$ docker-compose exec ubuntu bash # シェルを起動

SSHキー作成

コマンド一発叩くだけで鍵の作成ができます。

仮想マシン
# ssh-keygen # キー作成(デフォルトの設定で作成するなら3回Enterを押す)cat /root/.ssh/id_rsa.pub # 公開鍵を確認exit

cat /root/.ssh/id_rsa.pub でSSHの公開鍵を確認できる。これをコピペして、GitHubに登録する。
また、このとき.sshディレクトリをディレクトリごと残しておく。
残す方法としては、ホストマシンで以下のコマンドを実行すると、.sshが指定した場所にコピーされる。{container_name}はDockerfileで決めたcontainer_nameが入る。今回はssh_keygen。

ホストマシン
$ docker cp {container_name}:/root/.ssh .ssh  
$ # docker cp ssh-keygen:/root/.ssh .ssh <-今回はこれ

いざ!

ソースコード

docker-compose.yml
version: '3'
services:
  ubuntu:
    container_name: "ubuntu20.04"
    hostname: ubuntu

    build: ./  
    tty: true

    # ボリューム(ローカルのディレクトリ)を設定しデータを永続化(コンテナを潰してもデータは残る)(必要に応じて)
    volumes:
      - ./codes:/codes

    # ポート解放(必要に応じて)
    ports:
      - "8002:8002"
Dockerfile
FROM ubuntu:20.04

# インストールでConfiguring tzdataをスキップするためタイムゾーンを設定(必要に応じて)
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
        echo $TZ > /etc/timezone

RUN apt-get update
RUN apt-get install git -y
# SSHの設定
ADD .ssh /root/.ssh
RUN chmod 600 /root/.ssh/id_rsa
# Git cloneするディレクトリへ移動
WORKDIR /codes/

# 必要パッケージのインストール(必要に応じて)
RUN apt-get install python3 pip -y
RUN apt-get install python3-virtualenv -y
RUN apt-get install postgresql postgresql-contrib -y
RUN apt-get install mongodb mongodb-server -y
RUN apt-get install python-dev libpq-dev -y

docker-compose.ymlとDockerfileを作成する(上書き)。
先ほどと同じように仮想マシンを立ち上げます。

ホストマシン
$ docker-compose up -d # コンテナ作成
$ docker-compose exec ubuntu bash # シェルを起動

あとはクローンすればいいだけ!!

仮想マシン
# git clone git@github.com:{username}/{repository}.git
# cd {repository}/

あとは好きなようにできます。

最後に

思ったんやけど、ホストマシンでgit cloneして、そのクローンしたディレクトリをボリュームすれば、.sshの作成など必要ないことに気がつきました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?