docker 配置可以运行spark的容器并运行_进入容器后在容器里打开spark

RUN apt-get update
RUN apt-get install -y maven

WORKDIR /code//这里就是我们运行spark给本机配置的一个程序

Prepare by downloading dependencies

ADD pom.xml /code/pom.xml//添加当前目录的pom.xml到docker中的/code文件夹下,名字一样
RUN [“mvn”, “dependency:resolve”]//运行命令,就类似于在终端上运行命令“,”表示终端中的空格
RUN [“mvn”, “verify”]

Adding source, compile and package into a fat jar

ADD src /code/src//添加一个文件夹
RUN [“mvn”, “package”]

EXPOSE 4567//打开端口
CMD [“/usr/lib/jvm/java-8-openjdk-amd64/bin/java”, “-jar”, “target/sparkexample-jar-with-dependencies.jar”]//配置这条命令是每次打开容器,启动容器的时候都会运行这条命令,而上面的run就只会在创建的时候运行一次而已


当你用docker build -t xzj/spark:01 . (参照docker中保存镜像的格式,注意还有一个点)的时候,你就会发现,在 为容器下载maven的时候,运行好久都没过,很纠结。这时,是你被墙,不是你的代码又问题。


我的由于我已经清楚了Dockerfile的应用,   
 所以我直接用docker命令下载已经配置后的官网的镜像   
 命令:docker pull giantswarm/sparkexample 


下载了官网上的镜像,接下来我要做的就是在容器里配置mysql以及ssh,方便登陆接口进入容器中直接配置。   
 接下来我的Dockerfile为



FROM giantswarm/sparkexample 从官网上容器里面继承

WORKDIR /code

WORKDIR /code

Prepare by downloading dependencies

ADD pom.xml /code/pom.xml
RUN [“mvn”, “dependency:resolve”]
RUN [“mvn”, “verify”]

Adding source, compile and package into a fat jar

ADD src /code/src
RUN [“mvn”, “package”]

注意这里要更改系统的时区设置,因为在 web 应用中经常会用到时区这个系统变量,默认的 ubuntu 会让你的应用程序发生不可思议的效果哦

ENV DEBIAN_FRONTEND noninteractive

清空ubuntu更新包

RUN sudo rm -rf /var/lib/apt/lists/*

一次性安装vim,wget,curl,ssh server等必备软件

RUN echo “deb http://archive.ubuntu.com/ubuntu precise main universe”> /etc/apt/sources.list

RUN sudo apt-get update
RUN sudo apt-get install -y vim wget curl openssh-server sudo
RUN sudo mkdir -p /var/run/sshd

将sshd的UsePAM参数设置成no

RUN sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config

添加测试用户admin,密码admin,并且将此用户添加到sudoers里

RUN useradd admin
RUN echo “admin:admin” | chpasswd
RUN echo “admin ALL=(ALL) ALL” >> /etc/sudoers
#为admin用户赋予sudo权限

把admin用户的shell改成bash,否则SSH登录Ubuntu服务器,命令行不显示用户名和目录

RUN usermod -s /bin/bash admin

安装supervisor工具

RUN sudo apt-get install -y supervisor
RUN sudo mkdir -p /var/log/supervisor

添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

容器需要开放SSH 22端口

EXPOSE 22

容器需要开放SSH 4567端口

EXPOSE 4567

执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。

CMD [“/usr/bin/supervisord”]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值