Dockerfile部署jar包及docker-compose部署jar包

一、Dockerfile部署jar包

1、新建目录

mkdir pro1
cd pro1
touch Dockerfile

2、编辑Dockerfile

vim Dockerfile

如下内容:

# 拉取一个jdk为1.8的docker镜像
FROM java:8
# 声明作者是haoke
MAINTAINER haoke
# 前一个 pro1.jar  为上传的jar包,后一个 dk-pro1.jar 是将服务器中jar包对应在容器中运行的jar包名称
ADD pro1.jar  dk-pro1.jar
# 容器暴露的端口号,需要与jar包在容器中运行使用端口号一致
EXPOSE 10002
# 容器启动之后执行的命令, java -jar  dk-pro1.jar
ENTRYPOINT ["java","-jar"," dk-pro1.jar"]

3、构建jar包镜像

docker build -f Dockerfile -t dk-pro1:v1.0 .

4、运行jar容器

docker run -d --name con_pro1_jar -p 10002:10002 dk-pro1:v1.0

5、浏览器验证

http://ip:10002

二、docker-compose部署jar包

1、新建文件

mkdir pro1
cd pro1
touch docker-compose.yml

2、编写docker-compose.yml

version: '3'

# 关于网络,如果用到mysql或者redis,并且希望在同一个网络,那么就可以直接使用同一个网络名
# docker network create pro1_bridge
networks:
  pro1_bridge:
    driver: bridge

services:
   dk-pro1:
	 #Compose的容器名称格式是:<项目名称><服务名称><序号>
	 #可以自定义项目名称、服务名称,但如果想完全控制容器的命名,可以使用标签指定:
     container_name: con_pro1_jar
	 #image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
     image: dk-pro1:v1.0
     restart: always
	 #ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。
     ports:
       - 10002:10002
     networks:
       - pro1_bridge

3.构建并运行

cd pro1
docker-compose up -d

4.查看日志

docker-compose logs dk-pro1_con_pro1_jar_1

5.其他命令

docker-compose up -d nginx                     构建建启动nignx容器

docker-compose exec nginx bash            登录到nginx容器中

docker-compose down                              删除所有nginx容器,镜像

docker-compose ps                                   显示所有容器

docker-compose restart nginx                   重新启动nginx容器

docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器

docker-compose build nginx                     构建镜像 。        

docker-compose build --no-cache nginx   不带缓存的构建。

docker-compose logs  nginx                     查看nginx的日志 

docker-compose logs -f nginx                   查看nginx的实时日志

 

docker-compose config  -q                        验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 

docker-compose events --json nginx       以json的形式输出nginx的docker日志

docker-compose pause nginx                 暂停nignx容器

docker-compose unpause nginx             恢复ningx容器

docker-compose rm nginx                       删除容器(删除前必须关闭容器)

docker-compose stop nginx                    停止nignx容器

docker-compose start nginx                    启动nignx容器

三、容器与宿主机mysql通信

以常用mysql举例

  • 首先需要明确两点:
  1. 在docker容器里localhost并不是指宿主机的localhost,因此不能在容器中通过localhost:3306访问到宿主机的mysql。
  2. docker在运行时网络建立在docker0上,查看宿主机ip可以看到docker0信息:
    在这里插入图片描述
  3. 宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.17.0.1),因此,容器里可以通过172.17.0.1:3306访问到宿主机的mysql服务器,修改mysql连接代码为docker0的地址。
    ==注:==mysql默认是允许127.0.0.1访问的,172.17.0.1:3306可能无法访问通,需要设置mysql访问权限
# 登录mysql
mysql -u -p

 # @后写%为所有ip,
 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
 
 # @后写具体ip
 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.17.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;   
 
 # @前可以指定数据库dk
 mysql>GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
 
 # grant后一定要执行刷新权限
 mysql>flush privileges;
 
#其中各字符的含义:
#*.* 对任意数据库任意表有效
#"root" "12345678" 是数据库用户名和密码
# '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
# flush privileges 刷新权限信息

四、容器与宿主机redis通信

查询到容器docker0ip后,修改redis配置.

1.修改redis.conf文件

  • 内容如下:
    (1)bind 127.0.0.1 -::1 修改为 bind 172.17.0.1 -::1
    (2)protected-mode 设置为no
    (3)requirepass 设置密码 123123

2.停止当前进程

ps -ef|grep redis
kill 9 进程id

3.根据配置文件启动redis

./redis-server ../redis.conf
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值