2017-06-12 67 views
1

我有一個MySQL容器中創建使用搬運工文件訪問源容器從接收容器

from ubuntu:14.04 

run apt-get update && apt-get install -y apt-transport-https 

run apt-get install mysql-server -y 

run apt-get install mysql-client -y 

RUN apt-get update 
RUN apt-get install software-properties-common -y 
RUN add-apt-repository ppa:webupd8team/java -y 
RUN apt-get update 
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections 
RUN apt-get install oracle-java7-installer -y && \ oracle-java7-set-default 

RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 

env set MYSQL_ROOT_PASSWORD=root 

EXPOSE 3306 

和java的容器從Java:8的圖像。 java容器使用--link選項鍊接到mysql容器。

docker run -it --link mysqlc:csql java:8 

現在我需要從java容器執行mysql命令,但mysql命令不能在java容器中工作。問題是什麼?

我需要啓動mysql,從java容器創建數據庫?這個怎麼做? 我是否需要使用java以外的其他圖像來訪問mysql容器?

+0

您應該對RUN命令進行分組,以避免多層,與apt-get update具有更好的一致性,因此請參閱https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-做法/和我沒有看到你的Dockerfile中的任何'CMD'或'ENTRYPOINT',所以我很驚訝 – user2915097

回答

0

的一種方法是建立自己的Java形象,只要包含MySQL的客戶端如Java:

Dockerfile:

FROM Java:8 
RUN apt-get update && apt-get install mysql-client 

體形:

docker build . -t my-java-mysql 

運行:

docker run -it --link mysqlc:csql my-java-mysql:8 

然後,您的Java容器中有可用的mysql客戶端命令。