やりたいこと
Dockerをつかって、ubuntuでプログラムを実行したい!というあなた向け。
GitHubからコードをクローンして、ubuntu環境で試せます。コードを変更したりしても残せるようにします。
この記事の方法はかなりいけてないので、できれば、最後に初めにを読んでほしい。
環境
MacOS 12.0.1
Docker Engine v20.10.11
準備
ソースコード
version: '3'
services:
ubuntu:
container_name: "ssh-keygen"
hostname: ubuntu
build: ./
tty: true
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 <-今回はこれ
いざ!
ソースコード
version: '3'
services:
ubuntu:
container_name: "ubuntu20.04"
hostname: ubuntu
build: ./
tty: true
# ボリューム(ローカルのディレクトリ)を設定しデータを永続化(コンテナを潰してもデータは残る)(必要に応じて)
volumes:
- ./codes:/codes
# ポート解放(必要に応じて)
ports:
- "8002:8002"
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の作成など必要ないことに気がつきました。