docker构建Springboot,调用外部配置文件

jar包

mvn clean package

jar包上传到服务器目录下

此处jar包名字为SSO-0.0.1-SNAPSHOT.jar

基础镜像

docker pull openjdk:8

Dockerfile

新建Dockerfile文件

touch Dockerfile

目录结构
image

编辑文件

vim Dockerfile
# 使用基础镜像
FROM openjdk:8

# 设置工作目录
WORKDIR /app

# 复制可执行的 jar 文件,命名为test.jar
ADD SSO-0.0.1-SNAPSHOT.jar /app/test.jar

# 复制linux宿主机配置文件到镜像中
ADD conf/application.yaml /app/conf/application.yaml

# 多个配置文件
# ADD ....

# 设置环境变量
ENV SPRING_CONFIG_LOCATION=file:/app/conf/application.yaml

# 多个配置文件 ,file:/app....

# 暴露端口
EXPOSE 8889

# 启动 Spring Boot 应用
ENTRYPOINT ["java","-jar","test.jar"]

image

构建镜像

docker build -t test:1.0 .

运行容器

docker run -d \
--name desktop \
-p 8889:8889 \
-v /root/my_test/conf:/app/conf \
test:1.0

进入容器查看目录结构

docker exec -it desktop /bin/bash

image

检验生效

image

重启容器

docker restart desktop

image

发布镜像到Docker Hub

docker login
# 输入账号密码

标记镜像

docker tag image-name username/repository:tag

推送

docker push username/repository:tag

image

额外记录报错

docker: Error response from daemon: driver failed programming external connectivity on endpoint异常

**原因:**好像是因为先启动docker,再启动防火墙??

直接重启docker即可

systemctl restart docker

docker构建VUE项目

打包前端项目

npm run build

项目目录下生成dist文件夹

拉取镜像

docker pull nginx

新建目录结构

image

编辑配置文件

# default.conf

server {
    listen       80;
    server_name  localhost; # 修改为docker服务宿主机的ip
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
# Dockerfile文件

# 该镜像是基于nginx:latest镜像构建的
FROM nginx
 
# 删除目录下的default.conf文件
RUN rm /etc/nginx/conf.d/default.conf
 
# 将default.conf复制到/etc/nginx/conf.d/下,用本地的default.conf配置来替换nginx镜像里的默认配置
ADD default.conf /etc/nginx/conf.d/
 
# 将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/share/nginx/html/目录下
COPY dist/ /usr/share/nginx/html/

构建镜像

docker build -t test .

启动

docker run -d -p 9090:80 --name my_vue test

image