LoginSignup
2
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-06-10

はじめに

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を簡単に流れを説明すると次のようになっています
1. ベースのイメージをCentOS V8に
2. ロケールの設定
3. yumでアップデートと必要なパッケージのインストール
4. Mavenのバイナリをダウンロード
5. Dataloaderをダウンロード
6. mavenでビルド
7. mariadbのコネクタをインストール(DBに接続しなければ必要ないです)

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

今後

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4