デプロイサーバーを作成
前回の続き。
今回はデプロイ用のサーバーを作る。
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
最新バージョン
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