编写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 logs
和netstat -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
答案 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;