私は何ヶ月も大きな頭痛をきたしています。私たちは継続的な統合パイプラインを使って作業していますが、ステップの1つはnpmテストによってトリガーされる自動テストです。これはドッカーコンテナ内で実行されているジェンキンのスレーブ内部で行われ、Jenkins自体は別のコンテナにあります。私は、これは、UNIXシステムでan issue caused by not setting the localeで見つけ、それをグーグルではドンカーで実行されているJenkinsによってトリガされたnpmテスト出力のコード化が壊れています
[email protected] node_modules/node-schedule
��������� [email protected]
:中に は、出力は次のように壊れて表示されて構築します。私はDockerfileに環境変数を追加しようとしましたが、まだ運がありません。また、ロケール-GENを実行しようと、私は、コマンドが見つからないというエラーを取得:
RUN locale-gen ${LANGUAGE}
私はそれをインストールしてみてください、私が見つかりませ候補のパッケージを取得していないし。
RUN apt-get install locales
ここにスレーブのDockerfileがあります。
# NODEJS SLAVE
# Pull base image.
FROM node:0.10.42
ENV LANG_WHICH en
ENV LANG_WHERE US
ENV ENCODING UTF-8
ENV LANGUAGE ${LANG_WHICH}_${LANG_WHERE}.${ENCODING}
ENV LANG ${LANGUAGE}
RUN dpkg-reconfigure --frontend noninteractive locales \
&& apt-get update -qqy \
&& apt-get -qqy install \
language-pack-en \
RUN apt-get install -y nano openssh-server openjdk-7-jdk \
&& apt-get -y upgrade
EXPOSE 8080
<... ssh stuff...>
COPY package.json /src/package.json
RUN npm install -g npm
# Standard SSH port
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
そして、これは
# JENKINS MASTER
# Set the base image to Ubuntu
FROM jenkins:latest
ENV LANG_WHICH en
ENV LANG_WHERE US
ENV ENCODING UTF-8
ENV LANGUAGE ${LANG_WHICH}_${LANG_WHERE}.${ENCODING}
ENV LANG ${LANGUAGE}
RUN localedef en_US.UTF-8 -i en_US -fUTF-8
RUN dpkg-reconfigure --frontend noninteractive locales \
&& apt-get update -qqy \
&& apt-get -qqy install \
language-pack-en \
USER jenkins
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
COPY plugins.txt /usr/share/jenkins/plugins.txt
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
Dockerfileジェンキンスマスターのコンテナである誰もがこの問題を解決する上でいくつかのガイダンスを提供することができますか?
UPDATE:xenial:
私のUbuntuにベース画像を変更することによってロケール-GENを使用することができました。しかし、それはどちらもうまくいきませんでした。ジェンキンがnon-interactive shellを介して奴隷に接続し、それが必要な構成(/etc/profile
と/etc/default/locale
)をロードしないようにしているようです。 私も追加してみました:
USER jenkins
RUN echo "export=LC_ALL=en_US.UTF-8" >> /etc/.bashrc
をしかし、それはどちらか働いていませんでした。 HEREは私が今使っている完全なDockerfileです。
で発見することができますが、絶対パスでロケール-genを実行しようとすると、正しいPATH変数を設定していない可能性があります。 –
それを試してみました...また、Dockerfileを別のベースイメージでビルドしました。ubunto:xenial ...とno deal –