首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在对接后打开应用程序

无法在对接后打开应用程序
EN

Stack Overflow用户
提问于 2017-06-13 23:21:11
回答 1查看 495关注 0票数 2

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

下面是我的docker-compose.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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就像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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类似于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-06-14 04:34:45

在web应用程序中更新Dockerfile如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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-db文件夹重复使用run.sh。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"]

然后运行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose up
docker ps 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

要在MySQL容器中连接app-db服务器,项目中的JDBC应该如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"jdbc:mysql://DOCKER_MACHINE_IP:3306/DB_NAME".

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> CREATE USER 'root'@'DOCKER_MACHINE_IP' IDENTIFIED BY 'root_password'; 
> GRANT ALL ON *.* to root@'DOCKER_MACHINE_IP' IDENTIFIED BY 'root_password';
> FLUSH PRIVILEGES;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44538077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文