其实使用Docker,虽然简单了,但是也不是我们想象中那么简单,如果没有人带的话,有许多问题都需要自己踩坑。
比方说,想要在基础镜像里边部署我们的java项目,拉取下来的基础镜像,其实是最简单的内核,没有jdk,没有中文环境,这个表现出来的就是中文乱码。更严重的是,如果项目想要创建中文的文件夹,或者文件,就会变成问号,导致项目出问题。还有就是如果在里边部署数据库,我们的项目在根据服务器获取时间的话,写入到数据库,就会出现时间不对的情况,我遇到的是差一个时区,六个小时。
上边的问题,如果一步一步的搜解决方案,虽然最终能解决,但是很浪费时间。
所以在这里,我提供一个DockerFile的方式来构建一个基础的服务。
三步走,完成构建
DockerFile文件- 第一步下载 java需要的环境包,jdk环境。
为了减少麻烦,我已经将我用的 JDK上传到了百度网盘上,可以通过链接下载。
链接:https://pan.baidu.com/s/1L7LD097m2Xp71nYmleyczQ 提取码:ud3y
不知道如果想要使用其他版本的JDK,请看这篇文章:https://blog.csdn.net/weixin_37352094/article/details/80372821
进行JDK的下载,然后新建一个文件夹,把下载好的tar包放在新建的文件夹下。
- 第二步编写DockerFile
vim DockerFile
注意,如果你下载的jdk环境,不是这个版本的,需要修改下边的 jdk相关的内容。如果是使用我提供的JDK,则下边的内容一行都不需要改。
FROM ubuntu
# jdk 环境
COPY jdk-8u181-linux-x64.tar.gz /opt/source/jdk-8u181-linux-x64.tar.gz
# 解决时区问题
RUN apt-get update \
&& apt-get -y install vim \
&& apt-get -y install language-pack-zh-hans \
&& apt-get install -y tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone \
&& cd /opt/source \
&& tar -zxvf jdk-8u181-linux-x64.tar.gz \
&& rm -rf jdk-8u181-linux-x64.tar.gz
# 解决中文环境问题
ENV LANG="zh_CN.UTF-8"
RUN echo "export LC_ALL=zh_CN.UTF-8" >> /etc/profile && echo "export LC_ALL=zh_CN.UTF-8" >>/root/.bashrc
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 配置jdk
ENV JAVA_HOME /opt/source/jdk1.8.0_181
ENV PATH $PATH:$PATH:$JAVA_HOME/bin
最终的结构是:
- 第三步,使用DockerFile 构建镜像
根据dockerFile 构建成镜像,不要忽略最后的点
docker build -t basic-ubuntu:latest .
其中 basic-ubuntu:latest 代表的是镜像的标签 . 代表的是当前文件夹