--本文主要记录docker部署项目过程以及访问宿主机文件资源的方式

一、手动部署

需要提前说明的是,本人的开发环境为Window环境,而生产环境为Centos,所以对应的文件路径也需要区分。

1、第一步是配置文件的配置(配置内容仅作为举例)

application.yml

spring:
  profiles:
    active: dev

---

spring:
  profiles:
    active: prod

application-dev.yml

#application-dev.yml 项目环境为Windows
app:
  #映射路径
  doc-base: E:/image/

application-prod.yml

#application-prod.yml 项目环境为Centos
app:
  doc-base: /usr/image/

2、打包文件

通过maven将项目打包成.jar文件

3、Dockerfile编写

FROM java:alpine
VOLUME /tmp
ADD app-0.0.1-SNAPSHOT.jar app.jar
#"-c"清除以前启动的数据
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod","-c"]

4、创建docker目录并将项目文件和dockerfile添加进去

#docker可创建在任何地方,当然放在方便的位置更好,例如放到~根路径下
mkdir docker
#文件可以通过连接工具复制过去,例如SecureCRT

5、制作docker镜像

#进入docker目录下 --> 注意最后有一个点 .
docker build -t app .

6、创建好项目中我们需要使用到的文件路径  /usr/image/

cd /usr

mkdir image

#通过SecureCRT复制文件

7、运行容器并挂载文件目录

想要通过docker访问宿主机文件需要通过路径挂载的方式进行访问

#-v 挂载操作,冒号前为宿主机对应的路径,后者为容器中的路径
docker run -t --name app -p 8080:8080 -v /usr/image/:/usr/image app

可通过以下命令查看容器中挂载目录信息

docker inspect app | grep Mounts -A 20

进入容器中查看

docker exec -it app sh

发现成功将宿主机中的文件挂载到容器中

到这里我们就可以直接在浏览器访问我们的图片资源了,注意需要开放我们的项目端口,没有开放的可以执行以下命令

#查看防火墙状态
systemctl status firewalld   

#开启防火墙
systemctl start firewalld

#查看开放的端口
firewall-cmd --list-ports

#开放某个端口 --permanent作用是使其永久有效,重启后还有效
firewall-cmd --zone=public --add-port=8080/tcp --permanent

#最后记得重启防火墙
firewall-cmd --reload

 

二、IDEA集成Docker并部署

注意:以下的一系列操作仅适合内网操作,如果是外网IP或域名不要这样操作,否则很快就会被黑客攻击到,一般采用CA证书进行访问,详情请自行百度

1、docker配置文件修改

#进入docker.service编辑模式
vi /lib/systemd/system/docker.service


#注释以下行
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock


#保存并退出


#更新配置文件
systemctl deamon-reload
#重启docker服务
systemctl restart docker.service

在防火墙开放以上配置的2375端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --reload

2、idea连接docker

3、pom文件添加plugin配置

<!--docker镜像build插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <copy todir="src/main/docker"
                                      file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
                <version>1.8</version>
            </plugin>

4、编写dockerfile文件(docker文件参照开始部分)

5、配置容器启动参数(注意需要添加环境参数TZ=Asia/Shanghai不然时区会不一致

至此idea上docker的集成工作已经完成,接下来就进行打包操作,然后运行docker就行了

通过idea进行项目部署会方便很多,不需要每次手动更新。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐