1

docker-compose を使用して tomcat サービスを開始する際に実際に問題が発生しています。

これがdocker-compose.yml私が使用している

version: '3.0'
services:
 tomcat:
  build: ./docker/cs_tomcat
  container_name: tomcat-container
  ports:
   - "8080:8080"
  entrypoint:
   - bash
  stdin_open: true
  tty: true

cs_tomcatDockerfile内で作成したのは次のとおりです。

FROM tomcat:7.0.82-jre8
RUN apt-get update && apt-get -y upgrade
WORKDIR /usr/local/tomcat
COPY /cs.war /usr/local/tomcat/webapps/cs.war
RUN apt-get update && apt-get install -y dos2unix
EXPOSE 8080
COPY tomcat-users.xml /usr/local/tomcat/conf/
COPY file.xml /usr/local/tomcat/webapps/cs/conf/services/
COPY file2.xml /usr/local/tomcat/webapps/cs/conf/quartz/
COPY test.properties /usr/local/tomcat/conf/
ENV JAVA_OPTS="-Xms2G -Xmx2G"
# Copy Entrypoint script in the container
COPY ./docker-entrypoint.sh / 
ENTRYPOINT ["/docker-entrypoint.sh"]

以下を使用してこのdockerファイルを単独で実行すると、すべて正常に動作します

$ docker run -dit -p 8080:8080 app1 /bin/bash

次のコマンドを使用して docker コンテナーをビルドして起動するとdocker-compose、コンテナーは起動しますが、tomcat サービスは起動しません。

$ docker-compose up -d --build

ここに私のdocker-entrypoint.shファイルがあります

#!/usr/bin/env bash
 /usr/local/tomcat/bin/catalina.sh start 
 #wait
 #Extra line added in the script to run all command line arguments
exec "$@";

誰でもここで間違いを見ることができますか?これに関するヘルプは非常に高く評価されます。

4

1 に答える 1

0

ではなく、コンテナ内のプライマリ プロセスとして Tomcat を実行する必要がありますbash。バックラウンドで tomcat を実行すると、Docker はサービスを管理できなくなります。

公式イメージは Tomcat を起動するためcatalina.sh run、コマンドまたはエントリポイントをオーバーライドしないでそのままにしておきます。

services:
 tomcat:
  build: ./docker/cs_tomcat
  container_name: tomcat-container
  ports:
   - "8080:8080"

Dockerfile

FROM tomcat:7.0.82-jre8
RUN set -uex; \
    apt-get update; \ 
    apt-get -y upgrade; \
    apt-get install -y dos2unix
WORKDIR /usr/local/tomcat
COPY /cs.war /usr/local/tomcat/webapps/cs.war
EXPOSE 8080
COPY tomcat-users.xml /usr/local/tomcat/conf/
COPY file.xml /usr/local/tomcat/webapps/cs/conf/services/
COPY file2.xml /usr/local/tomcat/webapps/cs/conf/quartz/
COPY test.properties /usr/local/tomcat/conf/
ENV JAVA_OPTS="-Xms2G -Xmx2G"

tomcat次に、bash シェルを使用する場合は、コンテナーが起動したら実行します。

docker-compose exec tomcat bash
于 2017-10-19T03:56:34.023 に答える