zoukankan      html  css  js  c++  java
  • 构建javaweb服务的docker镜像和容器化启动服务

    一、构建javaweb服务的docker镜像和容器化启动服务

    1、开启docker远程访问
    a、vi /lib/systemd/system/docker.service
    b、在ExecStart=后追加如下配置
    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    c、刷新配置:systemctl daemon-reload
    d、验证成功:http://172.21.25.56:2375/version
    
    2、pom.xml
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 打包跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <!-- Docker宿主机地址 -->
                    <dockerHost>http://172.21.25.56:2375</dockerHost>
                    <!-- 镜像名字:版本号 -->
                    <imageName>${project.artifactId}:${project.version}</imageName>
                    <!-- true 会覆盖构建相同标签的镜像 -->
                    <forceTags>true</forceTags>
                    <!--指定 Dockerfile 位置-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!-- 将jar文件从target目录复制到镜像的根目录 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--指定需要复制的根目录,下面表示target目录-->
                            <directory>${project.build.directory}</directory>
                            <!--指定需要复制的文件,下面指的是打包后的jar包文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    3、创建Dockerfile(src/main/docker目录下)
    # 指定基础镜像
    # 你的开发环境是jdk8,就使用下面命令
    # FROM openjdk:8-jdk-alpine
    # openjdk9 在18年3月分开始不支持了, 支持从11开始,如果说你使用jdk1.9,则使用jdk14
    FROM openjdk:14.0-jdk
    
    # 数据卷,宿主机文件夹挂载到容器
    VOLUME /tmp
    
    # 环境变量
    # 在创建容器时使用 -e 可改变值,如 -e CONTEXT_PATH=/app
    ENV PORT=8080
    ENV CONTEXT_PATH=/app
    
    # 复制文件
    #ADD 包名.jar app.jar
    ADD *.jar app.jar
    
    # Docker容器启动时执行的命令,注意:是 -D 开头。如果有换行,后面要加上英文状态的  进行连接
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dserver.port=${PORT}","-Dserver.servlet.context-path=${CONTEXT_PATH}","/app.jar"]
    
    4、运行命令
    打包并构建镜像:mvn clean package docker:build(注意:jar包名不要有大写字母)
    启动容器:docker run -id --name=容器名 -p 宿主端口:8090 -e PORT=8090 -e CONTEXT_PATH=/docker 镜像ID
    查看日志:docker logs -f 容器ID
    
  • 相关阅读:
    Nginx反向代理Mysql
    Postgresql数据迁移
    Docker安装及配置
    jstack用法
    Centos7系统添加Windows字体
    Bash美化
    ERROR: new encoding (UTF8) is incompatible xxx
    Python selenium 自动化脚本打包成一个exe文件(转载 原文https://www.jb51.net/article/178430.htm)
    python -m pip install --upgrade pip 失败
    Warning: no saslprep library specified. Passwords will not be sanitized
  • 原文地址:https://www.cnblogs.com/linding/p/14886177.html
Copyright © 2011-2022 走看看