backlog-jenkins-nginx-dockerでWebサービスを構築_その2
デプロイサーバーを作成
前回の続き。 今回はデプロイ用のサーバーを作る。
docker
install
#version確認 uname -r 3.10.0-327.el7.x86_64 # 古いDockerを削除 sudo yum remove docker \ docker-common \ container-selinux \ docker-selinux \ docker-engine # 入れなおす sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum makecache fast yum list docker-ce.x86_64 --showduplicates |sort -r #出てきたものから選ぶ sudo yum install -y docker-ce.x86_64 # 起動と自動設定 sudo systemctl enable docker sudo systemctl start docker
DockerCompose
install
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > docker-compose sudo mv docker-compose /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # バージョン確認 docker-compose --version >>>docker-compose version 1.12.0, build b31ff33 # グループ作成 # dockerグループがなかった場合 #sudo groupadd docker sudo gpasswd -a $USER docker sudo systemctl restart docker exit # ログインし直す
Docker レジストリ
compose 作成
mkdir /home/docker mkdir /home/docker/registry cd /home/docker/registry vi docker-compose.yml
- docker-compose.yml
version: '3' services: registry: image: registry:2 tty: true container_name: registry restart: always ports: - "5000:5000" logging: driver: "json-file" options: max-size: "10m" max-file: "3"
レジストリの起動
docker-compose up -d
リバースプロキシ
リバースプロキシの設定
mkdir -p ~/nginx-proxy/certs vi ~/nginx-proxy/docker-compose.yml
- ~/nginx-proxy/docker-compose.yml
version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - 80:80 - 443:443 volumes: - ./certs:/etc/nginx/certs:ro - /etc/nginx/vhost.d - /usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro restart: always letsencrypt-nginx-proxy-companion: image: jrcs/letsencrypt-nginx-proxy-companion container_name: nginx-letsencrypt volumes: - ./certs:/etc/nginx/certs - /var/run/docker.sock:/var/run/docker.sock:ro volumes_from: - nginx-proxy restart: always
- 起動
cd ~/nginx-proxy docker-compose up -d
Git
最新バージョン
https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.2.3.tar.gz
install
####必要なものをインストール sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel ####取得して街道 cd /usr/local/src/ sudo yum install -y wget sudo wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.2.3.tar.gz sudo tar xzvf git-1.8.2.3.tar.gz ###入れておく sudo yum -y install perl-ExtUtils-MakeMaker ####install cd git-1.8.2.3 sudo make prefix=/usr/local all sudo make prefix=/usr/local install ###確認 git --version ###tar は削除 cd ../ rm -rf git-1.8.2.3.tar.gz
鍵をつくる
- デプロイサーバーでgit からpullしなければ不要 参考
jenkins サーバー
[root@jenkins ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: ....
- コピペして deploy サーバーへ
cat /root/.ssh/{key}.pub
デプロイサーバー
# 移動。なければつくる cd /root/.ssh vi id_rsa.pub
- 登録
cat id_rsa.pub >> ~/.ssh/authorized_keys
動くか確認
mkdir /home/repo cd /home/repo
鍵をつくる
- deploy サーバー
cd /root/.ssh/ ssh-keygen -t rsa cat id_rsa.pub
- backlog から個人設定> SSH 公開鍵から公開鍵の登録後、クローンする
cd /home/repo git clone {リポジトリ SSH }
コンテナを立ち上げる
cd /home/repo/{リポジトリ名} docker build -f /home/repo/{リポジトリ名}/Dockerfile-{ブランチ名} -t localhost:5000/ci-{リポジトリ名}-{ブランチ名} . docker push localhost:5000/ci-{リポジトリ名}-{ブランチ名} cmd=`docker ps -q --filter name=ci-{リポジトリ名}-{ブランチ名}` name=`echo $cmd` if [ "$name" != "" ]; then docker rm -f ci-{リポジトリ名}-{ブランチ名} fi docker run -i -d --rm --net=nginxproxy_default --name ci-{リポジトリ名}-{ブランチ名} localhost:5000/ci-{リポジトリ名}-{ブランチ名}
必要なパッケージを入れておく
- deploy サーバー
yum install -y expect