LUCK!

こんにちは、初めまして。エンジニアの杉本翔平です。

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

最新バージョン

ここの tar.gz の最新

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