はじめに
SalesfroceのDataloaderをDockerコンテナにしました。それだけでは何の役に立ちませんが、今後続けてこのコンテナを使用する記事を書いていきます。
Dataloaderとは
Salesforceの管理者、開発者にはご存知の、Salesforceからデータのダウンロードやアップロードができるアプリケーションです。SalesforceからWindows,Mac版がダウンロードして使用できます。Linuxでは未サポートですがソースからビルドして動かすこともできます。
データローダーはバッチで動かすこともでき,バッチで動かす記事はたくさんあります.定期的に起動してバックアップするために使用するのはWindowsよりもLinuxの適していると思います.私はDataloaderで定期的にSalesforceのオブジェクトをDBに保存したりしてました.今回はそのもとになるDataloaderをLinuxのDockerコンテナで作ってみました.
Dockerとは
コンテナというある程度閉じた環境でアプリケーションを動かすことができます。使用するリソースが少ない仮想化環境とでも思ってください。
#Dockerfile
ファイルはGitHubのokazakiyuji/dataloaderを見てみてください.Dockerのイメージはokazakiyuji/dataloader:cent8-DL50.0.0です.
FROM centos:8
MAINTAINER okazakiyuji <zaki@mbf.nifty.com>
# DataloaderはビルドするのにJava11が必要
RUN dnf -y update && \
dnf -y install langpacks-ja git svn which java-11-openjdk java-11-openjdk-devel unzip mysql && \
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
rm -rf /var/cache/yum/* && yum clean all
ENV LANG="ja_JP.UTF-8" \
LANGUAGE="ja_JP:ja" \
LC_ALL="ja_JP.UTF-8"
# make directory
ENV DL_ROOT /opt/dataloader
RUN mkdir -p $DL_ROOT && cd $DL_ROOT && mkdir bin conf data status log
# Build Maven
# Mavenをdnfでインストールするとjava8がインストールされるのでバイナリを使用する
WORKDIR /opt
RUN curl -L -O https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip && \
unzip apache-maven-3.6.3-bin.zip && \
mv apache-maven-3.6.3 apache-maven && \
rm apache-maven-3.6.3-bin.zip
ENV PATH $PATH:/opt/apache-maven/bin
# Build Dataloader
WORKDIR /tmp
# 51.0.1 はビルドできない
ENV DL_VER=50.0.0 \
DL_FILE=v50.0.0 \
DL_FOLDER=dataloader-50.0.0
RUN curl -L -O https://github.com/forcedotcom/dataloader/archive/$DL_FILE.zip && \
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/ && \
rm -r /tmp/$DL_FOLDER /tmp/$DL_FILE.zip
ENV PATH $PATH:$DL_ROOT/bin
# Install mysql connector
WORKDIR $DL_ROOT/bin/
ENV MYSQL_CON_VER 2.7.2
RUN curl -L -O https://downloads.mariadb.com/Connectors/java/connector-java-$MYSQL_CON_VER/mariadb-java-client-$MYSQL_CON_VER.jar
ENV DATALOADER_CLASSPATH $DL_ROOT/bin/mariadb-java-client-$MYSQL_CON_VER.jar:$DL_ROOT/bin/dataloader-$DL_VER-uber.jar
#
WORKDIR /tmp
このDockerfileを簡単に流れを説明すると次のようになっています
- ベースのイメージをCentOS V8に
- ロケールの設定
- yumでアップデートと必要なパッケージのインストール
- Mavenのバイナリをダウンロード
- Dataloaderをダウンロード
- mavenでビルド
- mariadbのコネクタをインストール(DBに接続しなければ必要ないです)
Docker使える方はご自身でDockerfileを書いて次のように指定していただければこのイメージが使用できます。
FROM okazakiyuji/dataloader:cent8-DL50.0.0
#今後
このコンテナイメージの使い方の例は今後の記事で書いていきます。
- CVSファイルのダウンロード
- ???
- ???