プロキシ環境下でUbuntu20.04にDockerをインストールするスクリプトをつくった。

# はじめに
社内プロキシ環境でDockerをはじめとした開発環境を構築する際、ハマったりしないでしょうか。
そこで、３STEPでスクリプトを作成して、流すだけで最新バージョンのDockerおよびdocker-composeをインストールできるようにしました。
社内プロキシ環境下のおかげで、環境構築に時間を溶かしている方の一助になれば幸いです。

# STEP1 プロキシ設定スクリプトを作成して実行する。

まず最初に社内のプロキシ情報を確認の上、下記項目を書き換えてください。

- [プロキシサーバのアドレス]
- [プロキシサーバのポート]

``` bash:settingProxy.sh
#!/bin/bash

# Proxy Info
PROXY="http://[プロキシサーバのアドレス]:[ポートのポート]"

# Insert Setting to .bashrc
echo "
export HTTP_PROXY=$PROXY
export HTTPS_PROXY=$PROXY
export FTP_PROXY=$PROXY
export http_proxy=$PROXY
export https_proxy=$PROXY
export ftp_proxy=$PROXY
export no_proxy=\"127.0.0.1,localhost\"
export NO_PROXY=\"127.0.0.1,localhost\"
" >> ~/.bashrc

source ~/.bashrc

# Add apt setting
echo "
Acquire::http::proxy \"${http_proxy}\";
Acquire::https::proxy \"${http_proxy}\";
" > /etc/apt/apt.conf

```

上記のファイルを作成後、下記のようにスクリプトを実行してください。

```
sudo sh settingProxy.sh
```
**.bashrcファイルへは追記書き込みしていますので、再実行した場合は設定情報が追記されていきます。**
**再実行する場合は、.bashrcファイルを開いて前の設定情報を削除してください。**

# STEP2 設定やパッケージインストールするスクリプトを作成して実行する。

次に設定およびパッケージインストールするスクリプトを作成します。
ポイントとしては下記です。

- SSHできるようにする
- エディタを使えるようにする
- タイムサーバとの時刻同期
- Windowsからリモートデスクトップできるようにする
 
**社内NTPサーバなどと同期しておかないと、時刻がズレてくるので対応しておきます。**
**[NTPサーバのアドレス]を書き換えてください**

```bash:installPackages.sh
#!/bin/bash

# set NTP server
sudo sed -i 's/#NTP=/NTP=[NTPサーバのアドレス]/' /etc/systemd/timesyncd.conf

# Update the apt package index
sudo apt-get update -y
sudo apt -y upgrade -y

# install OpenSSH
sudo apt -y install openssh-server

# install vim
sudo apt-get install vim-nox -y

# install xrdp
sudo apt -y install xrdp

# restart sshd
sudo service sshd restart

# restart timesyncd
sudo systemctl restart systemd-timesyncd.service

```

上記のファイルを作成後、下記のようにスクリプトを実行してください。

```
sudo sh installPackages.sh
```

# STEP3 DockerおよびDocker-composeをインストール＆設定するスクリプトを作って実行する。

最後にDockerおよびdocker-composeをインストール＆設定するスクリプトを作って実行します。
ポイントとしては下記です。

- http-proxy.confにプロキシを設定する
- docker-composeのバージョンは最新版を取得する


```bash:installDocker.sh
#!/bin/bash

# Update the apt package index
sudo apt-get update -y

# install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y

# Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Use the following command to set up the stable repository. 
sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

# INSTALL DOCKER ENGINE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# Create Dir
mkdir -p /etc/systemd/system/docker.service.d

# Create Proxy Setting File (overwrite)
echo "
[Service]
Environment=\"HTTP_PROXY=${http_proxy}\"
Environment=\"HTTPS_PROXY=${http_proxy}\"
Environment=\"NO_PROXY=localhost\"
" > /etc/systemd/system/docker.service.d/http-proxy.conf

# Apply Setting
sudo systemctl daemon-reload
sudo systemctl restart docker

# Install "docker-compose"
version=`curl -s https://api.github.com/repos/docker/compose/releases/latest | \
        grep tag_name | \
        sed -e 's/[^0-9\.]//g'`

sudo curl -L "https://github.com/docker/compose/releases/download/$version/docker-compose-$(uname -s)-$(uname -m)" \
             -o /usr/local/bin/docker-compose \
             -x ${http_proxy}

sudo chmod +x /usr/local/bin/docker-compose

# check docker version
docker version

# check docker-compose version
docker-compose version
```

上記のファイルを作成後、下記のようにスクリプトを実行してください。

```
sudo sh installDocker.sh
```
**実行後、Dockerおよびdocker-composeのバージョンが表示されれば完了です。**

# おわりに

**Windowsのメモ帳でスクリプトを作成した場合、改行コードがCR+LFとなってエラーします。**
**スクリプトの改行コードはLFでお願いします。**

Ubuntu 20.04 LTS 日本語 Remixにて正常実行したことを確認しています。