关于前后端分离的项目打包方案docker

就拿近期很火的sonic来说吧,
GitHub:https://github.com/SonicCloudOrg
主要打包部署的就是这两个部分关于前后端分离的项目打包方案docker_第1张图片

前端vue项目:
准备好vue环境

构建一个dockerfile文件:写下如下内容:

FROM nginx:1.20.0
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/  /usr/share/nginx/html/
COPY replace.sh /
RUN chmod 777 /replace.sh
CMD ["/replace.sh"]

然后npm run build,这个时候项目中会多出一个文件夹叫dist,在idea中显示是橙色的如下:
然后执行:
docker build -t sonic-org/sonic-client-web .(本地有一个dockerfile文件,所以可以直接使用)
关于前后端分离的项目打包方案docker_第2张图片
可以看到打包成功,然后再执行docker images 就可以看到一个名称为sonic-org/sonic-client-web的镜像,如果此时有仓库可以直接push,没有的话就导出一个压缩文件留着,再搬运到服务器上解压成镜像文件
本地生成镜像后,使用docker save -o 命令生成一个压缩文件
然后使用docker load -i 命令导出成images
保存docker save -o aaa_v1.tar aaa:v1 :如下:
docker save -o web.tar sonicorg/sonic-client-web:latest

导入docker load -i aaa_v1.tar
docker load -i web.tar

docker save -o web.tar sonicorg/sonic-client-web:latest

要是不需要迁移,直接在服务器打包的话,就不需要后面导出的步骤拉,

后端server项目打包:
首先需要mvn环境,mac如果是m1芯片的话,可能会打包失败,可以一试

首先准备好mvn环境,搜教程自己搞吧
然后在pom文件中加进来

<!-- 打包构建配置  -->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <!--   最终打包的jar包名,使用artifactId     -->
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <execution>
                        <id>imageBuild</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <configuration>
                            <pushImage>true</pushImage>
                            <imageName>sonicorg/${project.artifactId}:v${project.version}</imageName>
                            <baseImage>adoptopenjdk/openjdk15:alpine AS builder</baseImage>
                            <runs>
                                <run>ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</run>
                            </runs>
                            <entryPoint>
                                ["java","-server","-XX:-UseGCOverheadLimit","-XX:+DisableExplicitGC","-XX:SurvivorRatio=1","-XX:LargePageSizeInBytes=128M","-XX:SoftRefLRUPolicyMSPerMB=0","-Djava.security.egd=file:/dev/./urandom","--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED","-jar","/${project.build.finalName}.jar"]
                            </entryPoint>
                            <resources>
                                <resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}</directory>
                                    <include>${project.build.finalName}.jar</include>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

然后输入mvn package 就可以了,界面点的话就是这样

关于前后端分离的项目打包方案docker_第3张图片
这个是包含子项目的,分别点一下就好了

你可能感兴趣的:(杂,docker,容器,运维)