Dockerfile生成镜像到服务器的全过程

服务器前提环境:服务器安装docker、配置docker远程连接端口

vi /usr/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

重启docker,使修改生效

systemctl daemon-reload
systemctl restart docker

开放2375端口 

firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload

IDEA前提环境:以2019.3.3版本为例,该版本自带了Docker的plugin,在如下位置填写服务器地址即可

 使用Maven插件为SpringBoot应用构建Docker镜像

<build>
		<finalName>${project.artifactId}</finalName>
		<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>0.4.14</version>
				<configuration>
					<imageName>renren/admin</imageName>
					<dockerHost>http://服务器IP:2375</dockerHost>
					<dockerDirectory>${project.basedir}</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
				<!-- 运行命令 mvn clean package docker:build 打包并生成docker镜像 -->
			</plugin>
		</plugins>
	</build>

编写Dockerfile

FROM java:8
EXPOSE 8080

VOLUME /tmp
ADD renren-admin.jar /app.jar
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN bash -c 'touch /app.jar'
# 启动命令 读取prod配置
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]
 

在Terminal窗口运行命令 mvn clean package docker:build 打包并生成docker镜像

 

查看服务器docker镜像 docker images

启动容器

docker run -p 8080:8080 --name renren-admin --link mysql:db --net mysql_default -v /mydata/app/renren-admin/logs:/mydata/app/renren-admin/logs -d renren/admin

 --link 容器名:别名  --net xxx_default

Docker 在启动一个容器时,会为其创建一个默认网络-containerName_defaul,所以使用--link方式互联容器时由于默认不在一个网络中,会报上述错误,解决办法即添加--net XX_default,使新的container与link目标在同一个网络中。

java代码相关配置,数据库连接使用别名

将日志挂载到宿主机

 查看日志,启动成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值