[TOC]
说明: 用docker+vscode,搭建本地开发环境
dockerfile
集成ssh,java,maven环境
# install centos7
FROM centos:7
RUN yum -y install net-tools
#常用命令下载
RUN yum -y install wget
RUN yum install -y curl
#配置ssh
RUN yum -y install openssh-server
RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
RUN sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
RUN cat /etc/ssh/sshd_config
#创建一个新用户
RUN useradd maizissh -d /home/maizissh
RUN mkdir /home/maizissh/.ssh
RUN chown -R maizissh. /home/maizissh/.ssh
COPY id_rsa.pub /usr/local/macrsa/
RUN cd /usr/local/macrsa/ && ls -l
RUN cat /usr/local/macrsa/id_rsa.pub >> /home/maizissh/.ssh/authorized_keys
RUN cat /home/maizissh/.ssh/authorized_keys
RUN chmod 700 /home/maizissh/.ssh
RUN chmod 600 /home/maizissh/.ssh/authorized_keys
# install java
COPY jdk-8u11-linux-x64.tar.gz /usr/local/java/
RUN cd /usr/local/java/ && ls && tar -xvf jdk-8u11-linux-x64.tar.gz && ls
ENV JAVA_HOME /usr/local/java/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib;$JAVA_HOME/jre/lib
ENV PATH $PATH:$JAVA_HOME/bin
RUN java -version
RUN echo "java success"
# install maven
RUN cd /usr/local/ && mkdir maven
RUN wget http://apache-mirror.rbc.ru/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
RUN mv apache-maven-3.3.9-bin.tar.gz /usr/local/maven/ && ls
RUN cd /usr/local/maven/ && tar -xzvf apache-maven-3.3.9-bin.tar.gz && ls
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.3.9
ENV PATH $JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
RUN mvn -version
RUN echo "maven success"
# COPY java_maven.sh /usr/bin/java_maven.sh
# RUN chmod +x /usr/bin/java_maven.sh
#安装java和maven环境
# CMD [ "java_maven.sh" ]
# CMD ["/usr/sbin/init"]
注意 :ENV命令只是用当前的,不会去修改/etc/profile的文件,用 echo ‘MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9’»/etc/profile 添加到配置文件中,就永远的生效了。 不然退出去后,在进来,环境配置就失效了
SSH配置
centos容器中,我就设置了这两个地方, 其他一些配置,在容器centos中,并没有,我是通过秘钥连接的。
PermitRootLogin yes #禁用root账户登录,如果是用root用户登录请开启
PubkeyAuthentication yes
启动容器脚本
秘钥登录ssh,/Users/maizi/.ssh known_hosts 这个文件有时候需要删除已经链接的IP地址, 看具体错误查看这个文件
#!/usr/bin/env bash
build() {
cd /Users/maizi/.ssh
rm -rf id_rsa
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cp -fp ~/.ssh/id_rsa.pub ~/工具/dockerBuild
echo "mac秘钥 success"
#开始构建
cd /Users/maizi/工具/dockerBuild
docker build -t mycentos7 .
}
start() {
#运行
docker run -itd --name mycentos7 -p 22:22 --privileged=true mycentos7 /usr/sbin/init
}
stop() {
docker stop mycentos7
docker rm mycentos7
}
remove() {
docker stop mycentos7
docker rm mycentos7
docker rmi mycentos7
}
check() {
docker exec -it mycentos7 bash
}
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart]"
exit 1
}
case "$1" in
"build")
build
start
;;
"start")
start
;;
"stop")
stop
;;
"check")
check
;;
"restart")
echo "restart......"
stop
start
echo "restart success"
;;
*)
check
;;
esac
问题
直接构建的容器,进去后,已经安装好了java和maven环境,但是,直接连接SSH,用终端进入查看,环境并没有安装好, 现在也不知道,为什么容器进入有开发环境,终端连接没有,也许是因为重新连接了一个终端,环境没有用了,所以下面有一个脚本,安装环境。
java,maven脚本
#!/usr/bin/env bash
#
echo "install java maven 环境"
#安装java环境
cd /usr/local/java/ && ls && tar -xvf jdk-8u11-linux-x64.tar.gz && ls
echo 'export JAVA_HOME=/usr/local/java/jdk1.8.0_11'>>/etc/profile
echo 'export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar'>>/etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin'>>/etc/profile
source /etc/profile
java -version
echo "java success"
#安装maven环境
cd /usr/local/ && mkdir maven
wget http://apache-mirror.rbc.ru/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9-bin.tar.gz /usr/local/maven/ && ls
cd /usr/local/maven/ && tar -xzvf apache-maven-3.3.9-bin.tar.gz && ls
echo 'export MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9'>>/etc/profile
echo 'export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH'>>/etc/profile
source /etc/profile
mvn -version
echo "maven success"
source /etc/profile
注意: source /etc/profile #针对用户 source /etc/bashrc #针对系统,所以我修改 /etc/bashrc文件, 加入export这些操作,在重新连接终端,可以有java和maven环境。
效果图
vscode安装SFTP插件,可以实现本地和远程服务端的文件传输。下面是直接进入容器内的centos系统。
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付