无法在docker-compose之后打开应用程序

在编写docker文件之后,一切都很好,但是在执行docker ps它显示没有容器正在运行。

以下是我docker-compose.yml

 version: '3' services: web-app: build: context: . dockerfile: web-app/Dockerfile ports: - 8080:8080 links: - app-db app-db: build: context: . dockerfile: app-db/Dockerfile environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=Optimize ports: - 3306:3306 

和Web应用程序的Dockerfile就像

 FROM aallam/oracle-java ENV DEBIAN_FRONTEND noninteractive ENV TOMCAT_MAJOR_VERSION=8 ENV TOMCAT_VERSION=8.5.14 ENV TOMCAT_HOME=/opt/tomcat RUN apt-get update && \ rm -rf /var/lib/apt/lists/* WORKDIR /tmp RUN groupadd tomcat && \ useradd -s /bin/false -g tomcat -d $TOMCAT_HOME tomcat && \ mkdir $TOMCAT_HOME && \ #wget http://mirrors.standaloneinstaller.com/apache/tomcat/tomcat-$TOMCAT_MAJOR_VERSION/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz && \ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz && \ tar xzvf apache-tomcat-8*tar.gz -C $TOMCAT_HOME --strip-components=1 && \ chown -R tomcat:tomcat $TOMCAT_HOME && \ chmod -R g+r $TOMCAT_HOME/conf && \ chmod g+x $TOMCAT_HOME/conf && \ rm -rf apache-tomcat-$TOMCAT_VERSION.tar.gz WORKDIR / ADD /web-app/tomcat-run.sh /tomcat-run.sh ADD /web-app/run.sh /run.sh ADD /web-app/supervisord-tomcat.conf /etc/supervisor/conf.d/supervisord-tomcat.conf ADD /web-app/settings.xml $TOMCAT_HOME/conf/settings.xml ADD /web-app/tomcat-users.xml $TOMCAT_HOME/conf/tomcat-users.xml ADD /web-app/context.xml $TOMCAT_HOME/webapps/manager/META-INF/context.xml RUN chmod 755 /*.sh COPY /web-app/target/*.war $TOMCAT_HOME/webapps/ expose 8080 ENTRYPOINT ["/run.sh"] 

和数据库的Dockerfile是一样的

 FROM aallam/oracle-java ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get -yq install mysql-server supervisor && \ rm -rf /var/lib/apt/lists/* #WORKDIR / ADD /app-db/bind_0.cnf /etc/mysql/conf.d/bind_0.cnf ADD /app-db/mysql-run.sh /mysql-run.sh ADD /app-db/supervisord-mysql.conf /etc/supervisor/conf.d/supervisord-mysql.conf VOLUME ["/var/lib/mysql"] expose 3306 

docker-compose up -d这是terminal的输出

user @ ubuntu:〜/创buildoptdocker_app-db_1

user @ ubuntu:〜/创buildoptdocker_web-app_1

添加netstat -tln docker-compose logsnetstat -tln

 user@ubuntu:~/Opt-Docker$ netstat -tln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 :::40645 :::* LISTEN tcp6 0 0 127.0.0.1:9000 :::* LISTEN tcp6 0 0 127.0.0.1:9001 :::* LISTEN tcp6 0 0 :::10000 :::* LISTEN tcp6 0 0 127.0.0.1:36241 :::* LISTEN tcp6 0 0 :::42801 :::* LISTEN tcp6 0 0 :::37971 :::* LISTEN user@ubuntu:~/Opt-Docker$ docker-compose logs Attaching to optdocker_web-app_1, optdocker_app-db_1 user@ubuntu:~/Opt-Docker$ 

docker ps不给任何东西。 任何人都可以告诉我在哪里,我做错了什么

docker ps -a输出

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3a93140ab6f4 optdocker_web-app "/bin/bash" 16 minutes ago Exited (0) 16 minutes ago optdocker_web-app_1 53b7ec265fac optdocker_app-db "/bin/bash" 16 minutes ago Exited (0) 16 minutes ago optdocker_app-db_1 

web-app中更新Dockerfile ,如下所示:

 FROM aallam/oracle-java ENV DEBIAN_FRONTEND noninteractive ENV TOMCAT_MAJOR_VERSION=8 ENV TOMCAT_VERSION=8.5.14 ENV TOMCAT_HOME=/opt/tomcat RUN apt-get update && \ apt-get -yq install supervisor && \ rm -rf /var/lib/apt/lists/* WORKDIR /tmp RUN groupadd tomcat && \ useradd -s /bin/false -g tomcat -d $TOMCAT_HOME tomcat && \ mkdir $TOMCAT_HOME && \ #wget http://mirrors.standaloneinstaller.com/apache/tomcat/tomcat-$TOMCAT_MAJOR_VERSION/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz && \ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz && \ tar xzvf apache-tomcat-8*tar.gz -C $TOMCAT_HOME --strip-components=1 && \ chown -R tomcat:tomcat $TOMCAT_HOME && \ chmod -R g+r $TOMCAT_HOME/conf && \ chmod g+x $TOMCAT_HOME/conf && \ rm -rf apache-tomcat-$TOMCAT_VERSION.tar.gz WORKDIR / ADD /web-app/tomcat-run.sh /tomcat-run.sh ADD /web-app/run.sh /run.sh ADD /web-app/supervisord-tomcat.conf /etc/supervisor/conf.d/supervisord-tomcat.conf ADD /web-app/settings.xml $TOMCAT_HOME/conf/settings.xml ADD /web-app/tomcat-users.xml $TOMCAT_HOME/conf/tomcat-users.xml ADD /web-app/context.xml $TOMCAT_HOME/webapps/manager/META-INF/context.xml RUN chmod 755 /*.sh COPY /web-app/target/*.war $TOMCAT_HOME/webapps/ expose 8080 ENTRYPOINT ["/run.sh"] 

web-appapp-db文件夹复制run.sh。

更新app-db中的 Dockerfile ,如下所示:

 FROM aallam/oracle-java ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get -yq install mysql-server supervisor && \ rm -rf /var/lib/apt/lists/* #WORKDIR / ADD /app-db/run.sh /run.sh ADD /app-db/bind_0.cnf /etc/mysql/conf.d/bind_0.cnf ADD /app-db/mysql-run.sh /mysql-run.sh ADD /app-db/supervisord-mysql.conf /etc/supervisor/conf.d/supervisord-mysql.conf VOLUME ["/var/lib/mysql"] expose 3306 ENTRYPOINT ["/run.sh"] 

然后运行命令:

 docker-compose up docker ps 

输出将是这样的,系统已经启动:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a60682b914a4 test_web-app "/run.sh" Less than a second ago Up 9 seconds 0.0.0.0:8080->8080/tcp test_web-app_1 607522cac623 test_app-db "/run.sh" Less than a second ago Up 9 seconds 0.0.0.0:3306->3306/tcp test_app-db_1 

要在app-db容器中连接MySQL服务器,你的项目中的JDBC连接url应该是这样的:

 "jdbc:mysql://DOCKER_MACHINE_IP:3306/DB_NAME". 

app-db容器端,从命令行访问MySQL,使用DOCKER_MACHINE_IP为用户创build和授予权限:

 > CREATE USER 'root'@'DOCKER_MACHINE_IP' IDENTIFIED BY 'root_password'; > GRANT ALL ON *.* to root@'DOCKER_MACHINE_IP' IDENTIFIED BY 'root_password'; > FLUSH PRIVILEGES;