Vue项目

我们先建立一个项目的文件目录,比如image.png
然后在该目录下创建vue工程
vue工程的创建我就不赘述了,网上教程一大把。这里提一下的是,我们需要的是vue项目build后的静态文件,将其放在nginx目录下。

vue工程创建好后,cd到工程目录,修改你的前端代码,这里我们只是为了尝试docker运行vue项目build的文件,所以就用默认的代码,npm run build打包项目

nginx配置

我们从docker hub上面进行nginx的拉取,通过docker pull nginx进行拉取,拉取完后,可通过命令docker image ls 命令来查看本地已存在的镜像列表,会发现多了个nginx镜像

可以在项目(vue-test/vue工程目录)的根目录新增一个nginx.conf文件,和nginx目录下配置文件一样,可以修改自定义配置
不用配置也可以,就会使用nginx默认配置,默认80端口、静态页目录ngnix/html

Dockerfile

项目(vue-test/vue工程目录)的根目录增加一个Dockerfile文件
mkdir Dockerfile
然后vi Dockerfile编辑内容如下:

FROM nginx  #指定基础镜像,即运行环境
COPY dist/ /usr/share/nginx/html/   #copy dist/ 到镜像内/usr/share/nginx/html/下

然后在该目录下运行
docker build -t 自定义镜像名 .
构建一个新镜像,如果本地不存在指定的基础镜像,docker会自动拉取,这里等待完成即可
完成后输入docker images会发现镜像列表多了一个刚刚自定义名字的镜像

最后docker run --name 自定义容器名 -p8080:80 -d 自定义镜像名运行一个容器,之后打开对应地址8080端口就可以访问这个项目了

docker运行springboot项目

参考资料

然后我尝试着docker运行了一个springboot,具体步骤大同小异,这里简述一下,首先我在本地机器(docker部署在远程服务器上)创建了一个springboot项目,简单的写了一个接口,然后通过maven打成jar包,然后xshell上传到服务器,在该目录下创建Dockerfile:

FROM java:8
VOLUME /tmp
ADD movie-0.0.1-SNAPSHOT.jar app.jar 
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

说明:

FROM:表示基础镜像,即运行环境

VOLUME:一个特别指定的目录,用于存储数据,该命令的作用是在/var/lib/docker创建一个名为tmp的目录,在开启redis服务时,需要特别指定redis的数据存储在哪个文件夹,此时这个命令就十分有用

ADD:拷贝文件并且重命名

EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界

ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

然后执行上文提到的命令

docker build -t 自定义镜像名 .
docker run --name 自定义容器名 -p8081:8080 -d 自定义镜像名

之后访问8081端口,正确显示了接口返回


usluckily
8 声望1 粉丝