Dockerfile デプロイメント jar パッケージと docker-compose デプロイメント jar パッケージ

1. 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

2 つ、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容器

3. コンテナはホスト mysql と通信します。

一般的な mysql を例に挙げます

  • まず、次の 2 つのことを明確にする必要があります。
  1. Docker コンテナでは、localhost はホストの localhost を参照しないため、コンテナ内の localhost:3306 を介してホストの mysql にアクセスすることはできません。
  2. docker が実行されている場合、ネットワークは docker0 上に確立され、ホスト IP を確認することで docker0 の情報を確認できます。
    ここに画像の説明を挿入
  3. コンテナと同じ LAN 内のホストの IP アドレスは、通常、docker0 に対応する IP アドレス セグメントの最初のアドレス (172.17.0.1 など) であるため、コンテナは 172.17.0.1 を通じてホストの mysql サーバーにアクセスできます。 :3306、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 刷新权限信息

4 番目に、コンテナはホスト Redis と通信します。

コンテナ docker0ip をクエリした後、redis 構成を変更します。

1. redis.conf ファイルを変更します。

  • 内容は以下の通りです。
    (1) binding 127.0.0.1 -::1 を binding 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

おすすめ

転載: blog.csdn.net/weixin_43676010/article/details/128136458