Salesforce
docker
DataLoader

DataloaderをDockerコンテナにしました

はじめに

SalesfroceのDataloaderをDockerコンテナにしました。それだけでは何の役に立ちませんが、今後続けてこのコンテナを使用する記事を書いていきます。

Dataloaderとは

Salesforceの管理者、開発者にはご存知の、Salesforceからデータのダウンロードやアップロードができるアプリケーションです。SalesforceからWindows版がダウンロードして使用できます。Linuxでは未サポートですがソースからビルドして動かすこともできます。
データローダーはバッチで動かすこともできます。Windowsでバッチで動かす記事はたくさんありますし、定期的に起動してバックアップするために使用するのはWindowsよりもLinuxのほうがふさわしいと思いますので、今回はLinuxのDockerコンテナで作ってみました

Dockerとは

コンテナというある程度閉じた環境でアプリケーションを動かすことができます。使用するリソースが少ない仮想化環境だと思ってください。Dataloaderをビルドして実行する環境を作るために使用します。ベースのイメージには最小のアプリしか含まれてないので、どんなアプリやライブラリが必要かわかりやすいです。Dockerファイルに記述していることが分かるようになると、仮想/物理の環境にインストールするのも簡単です。

Dockerfile

ファイルはDockerHubのokazakiyuji/dataloaderのDockerfileからダウンロードしてください

FROM centos:7
MAINTAINER okazakiyuji
RUN yum -y update && \
    yum -y install git svn java-1.8.0-openjdk maven unzip mysql && \
    rm -rf /var/cache/yum/* && \
    yum clean all
# make directory
ENV DL_ROOT /opt/dataloader
RUN mkdir -p $DL_ROOT && cd $DL_ROOT && mkdir bin conf data status log
# Build Dataloader 
WORKDIR /tmp
ENV DL_VER 42.0.0
ENV DL_FILE V42.0
ENV DL_FOLDER dataloader-42.0
ADD https://github.com/forcedotcom/dataloader/archive/$DL_FILE.zip ./
RUN unzip $DL_FILE.zip && \
    cd ./$DL_FOLDER && \
    mvn clean package -DskipTests && \
    mv target/dataloader-$DL_VER-uber.jar $DL_ROOT/bin/ && \
    cp license.txt $DL_ROOT/bin/ && \
    cd .. && rm -r ./$DL_FOLDER ./$DL_FILE.zip 
# Install mysql connector
ENV MYSQL_CON_VER 2.1.0
ADD https://downloads.mariadb.com/Connectors/java/connector-java-$MYSQL_CON_VER/mariadb-java-client-$MYSQL_CON_VER.jar $DL_BIN_DIR/
#
ENV DATALOADER_CLASSPATH $DL_ROOT/bin/mariadb-java-client-$MYSQL_CON_VER.jar:$DL_ROOT/bin/dataloader-$DL_VER-uber.jar
ENV PATH $PATH:$DL_ROOT/bin
ENV DL_BIN_DIR $DL_ROOT/bin

このDockerfileを簡単に流れを説明すると次のようになっています
1. ベースのイメージをCentOS V7に
2. ロケールの設定
3. yumでアップデートと必要なパッケージのインストール
4. Dataloaderをダウンロード
5. mavenでビルド
6. mariadbのコネクタをインストール(DBに接続しなければ必要ないです)
7. その他の環境変数の設定

Docker使える方はご自身でDockerfileを書いて次のように指定していただければこのイメージが使用できます。
FROM okazakiyuji/dataloader

今後

このコンテナイメージの使い方の例は今後の記事で書いていきます。

  1. CVSファイルのダウンロード
  2. ???
  3. ???