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

时间:2017-06-14 07:21:11

标签: docker docker-compose dockerfile

编写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
网页应用的

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"]

和数据库for的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之后这是终端

中的输出
  

user @ ubuntu:〜/创建optdocker_app-db_1

     

user @ ubuntu:〜/创建optdocker_web-app_1

添加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

1 个答案:

答案 0 :(得分:0)

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-app app-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为用户创建并授予权限:

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