当前位置: 首页 > 编程日记 > 正文

docker实战部署Javaweb项目

一、部署环境说明

docker服务版本:
version 18.09.0
nginx服务版本:
version: nginx/1.15.10
redis服务版本:
version: redis/5.0.3
tomcat服务版本:
version: tomcat/8.5.30
JDK服务版本:
alpine-oraclejdk8

二、安装docker服务

配置阿里yum源并安装docker

# yum install docker -y

三、项目部署

1、准备工作

拉取如下镜像

# docker images

[root@localhost ~]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
nginx                                                  1.15.10             2bcb04bdb83f        3 months ago        109MB
tomcat                                                 8.5.30              38bdcf7a367c        14 months ago       546MB
redis                                                  latest              82629e941a38        6 months ago        95MB
huanwei/alpine-oraclejdk8                              latest              28e66d63b8a4        2 years ago         167MB

拉取命令如下:

# docker pull docker.io/huanwei/alpine-oraclejdk8

# docker pull daocloud.io/library/tomcat:8.5.30

# docker pull daocloud.io/library/nginx:1.15.10

# docker pull daocloud.io/library/redis:5.0.3

镜像重命名

# docker tag daocloud.io/library/nginx:1.15.10 nginx:1.15.10

# docker tag daocloud.io/library/tomcat:8.5.30 tomcat:8.5.30

删除旧的镜像名

# docker rmi daocloud.io/library/nginx:1.15.10

# docker rmi daocloud.io/library/tomcat:8.5.30

软件版本说明:
nginx version: nginx/1.15.10
redis version: redis/5.0.3
tomcat version: tomcat/8.5.30
alpine-oraclejdk8

2、创建两个tomcat容器

创建一个测试tomcat容器,用于拷贝tomcat原文件

# docker run --name test -d -i -t tomcat:8.5.30 /bin/bash

[root@localhost docker-server]# docker run --name test -d -i -t tomcat:8.5.30 /bin/bash
1287b583d3b7b85a65ea4d80640124fc5dbd1905d0fc5c33ef05e0ba9872c681

进入测试容器熟悉tomcat安装位置

# docker exec -it test bash

[root@localhost docker-server]# docker exec -it test bash
root@1287b583d3b7:/usr/local/tomcat#
root@1287b583d3b7:/usr/local/tomcat# ls
LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
root@1287b583d3b7:/usr/local/tomcat#
root@1287b583d3b7:/usr/local/tomcat# pwd
/usr/local/tomcat
root@1287b583d3b7:/usr/local/tomcat#
root@1287b583d3b7:/usr/local/tomcat# cd ..
root@1287b583d3b7:/usr/local#
root@1287b583d3b7:/usr/local# ls
bin  etc  games  include  lib  man  sbin  share  src  tomcat
root@1287b583d3b7:/usr/local#
root@1287b583d3b7:/usr/local# exit
exit

拷贝容器的tomcat文件用于后期的tomcat映射挂载

# docker cp test:/usr/local/tomcat /home/tjsp/

[root@localhost docker-server]# docker cp test:/usr/local/tomcat /home/tjsp/
[root@localhost docker-server]# cd ..
[root@localhost tjsp]# ls
docker-server  tomcat
[root@localhost tjsp]#
[root@localhost tjsp]# cd tomcat/
[root@localhost tomcat]#
[root@localhost tomcat]#
[root@localhost tomcat]# ls
LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
[root@localhost tomcat]#

复制tomcat文件用于映射挂载tomcat1服务

[root@localhost tjsp]# cp -r tomcat/ tomcat1
[root@localhost tjsp]#
[root@localhost tjsp]#
[root@localhost tjsp]# ls
docker-server  tomcat  tomcat1
[root@localhost tjsp]#

创建容器

# docker run -p 8081:8080 --name tomcat1 -h Front-end1 -v /home/tjsp/tomcat1:/usr/local/tomcat -d tomcat:8.5.30

# docker run -p 8082:8080 --name tomcat2 -h Front-end2 -v /home/tjsp/tomcat2:/usr/local/tomcat -d tomcat:8.5.30

[root@localhost tjsp]# docker run -p 8081:8080 --name tomcat1 -h Front-end1 -v /home/tjsp/tomcat1:/usr/local/tomcat -d tomcat:8.5.30
d41f7b69ebbf9717629b220907fc7c88e8d106f2b99a805c6b0465b4bc49f484
[root@localhost tjsp]#
[root@localhost tjsp]# docker run -p 8082:8080 --name tomcat2 -h Front-end2 -v /home/tjsp/tomcat2:/usr/local/tomcat -d tomcat:8.5.30
78b5482a0a9546f5355fccb8f28bf4e08751f58e74b8a3b66af36a775ae31788
[root@localhost tjsp]#

查看运行状态

# docker ps

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8081->8080/tcp   tomcat1
1287b583d3b7        tomcat:8.5.30                                          "/bin/bash"              About an hour ago   Up About an hour    8080/tcp                 test

添加office服务,运行一个tomcat跑war包

# cp -r tomcat tomcat3

[root@localhost ~]# cd /home/tjsp/
[root@localhost tjsp]#
[root@localhost tjsp]# ls
docker-server  nginx  tomcat  tomcat1  tomcat2
[root@localhost tjsp]#
[root@localhost tjsp]# cp -r tomcat tomcat3
[root@localhost tjsp]#
[root@localhost tjsp]# ls
docker-server  nginx  tomcat  tomcat1  tomcat2  tomcat3

创建一个tomcat容器

# docker run -p 8086:8080 --name tomcat3 -h tjsp_office -v /home/tjsp/tomcat3:/usr/local/tomcat -d tomcat:8.5.30

[root@localhost tjsp]# docker run -p 8086:8080 --name tomcat3 -h tjsp_office -v /home/tjsp/tomcat3:/usr/local/tomcat -d tomcat:8.5.30
9fe494bf43bc446f9f021d19e25ec5e030e6031c8fc65dcc8f08609f3b4bc946
[root@localhost tjsp]#
[root@localhost tjsp]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
9fe494bf43bc        tomcat:8.5.30                                          "catalina.sh run"        6 seconds ago       Up 5 seconds        0.0.0.0:8086->8080/tcp   tomcat3

3、创建nginx容器

创建一个测试nginx容器,用于拷贝nginx原文件

# docker run --name nginx_test -h nignx1.15.10 -d nginx:1.15.10

# docker cp nginx_test:/etc/nginx /home/tjsp/

[root@localhost tjsp]# docker run --name nginx_test -h nignx1.15.10 -d nginx:1.15.10
0b02f6f222ef38aa2f39fa7ac5d5a588b5df24bb6d7e28fba90aa55b0a4bf82e
[root@localhost tjsp]#
[root@localhost tjsp]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
0b02f6f222ef        nginx:1.15.10                                          "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        80/tcp                   nginx_test
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8081->8080/tcp   tomcat1
1287b583d3b7        tomcat:8.5.30                                          "/bin/bash"              About an hour ago   Up About an hour    8080/tcp                 test
[root@localhost tjsp]#
[root@localhost tjsp]# docker cp nginx_test:/etc/nginx /home/tjsp/
[root@localhost tjsp]#
[root@localhost tjsp]# ls
docker-server  nginx  tomcat  tomcat1  tomcat2
[root@localhost tjsp]#
[root@localhost tjsp]# cd nginx/
[root@localhost nginx]#
[root@localhost nginx]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@localhost nginx]#

创建容器

# docker run --name nginx_tjsp -h nignx1.15.10 -p 7080:80 -v /home/tjsp/nginx:/etc/nginx/ -d nginx:1.15.10

[root@localhost nginx]# docker run --name nginx_tjsp -h nignx1.15.10 -p 7080:80 -v /home/tjsp/nginx:/etc/nginx/ -d nginx:1.15.10
39e65baa524a62e2a07ad0ccc035baf829f3f9736148529b79d18452011bf390
[root@localhost nginx]#
[root@localhost nginx]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
39e65baa524a        nginx:1.15.10                                          "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:7080->80/tcp     nginx_tjsp
0b02f6f222ef        nginx:1.15.10                                          "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        80/tcp                   nginx_test
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8081->8080/tcp   tomcat1
1287b583d3b7        tomcat:8.5.30                                          "/bin/bash"              About an hour ago   Up About an hour    8080/tcp                 test

修改nginx配置文件

# vi /home/tjsp/nginx/nginx.conf

配置文件如下:

user  root;
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;## Proxyupstream tjsp_client_proxy {server 192.168.2.207:8081 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.207:8082 weight=1 max_fails=2 fail_timeout=30s;}upstream tjsp_server_proxy {server 192.168.2.207:8083 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.207:8084 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.207:8087 weight=1 max_fails=2 fail_timeout=30s;}upstream etl_server_proxy {server 192.168.2.207:8085 weight=1 max_fails=2 fail_timeout=30s;#server 172.17.8.20:8086 weight=1 max_fails=2 fail_timeout=30s;}upstream exp_server_proxy {server 192.168.2.207:8086 weight=1 max_fails=2 fail_timeout=30s;}server {listen       80;server_name localhost;error_page   500 502 503 504  /50x.html;location / {root html;autoindex on;autoindex_exact_size off;autoindex_localtime on;index  index.html index.htm;}location /tjsp {root html;autoindex on;autoindex_exact_size off;autoindex_localtime on;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://tjsp_client_proxy/tjsp;#try_files $uri $uri/ /mainproxy_redirect off; proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /a_ssets {root html;autoindex on;autoindex_exact_size off;autoindex_localtime on;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://tjsp_client_proxy/assets;#try_files $uri $uri/ /mainproxy_redirect off;proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /zjb {root   html;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://tjsp_server_proxy/;
            proxy_redirect off;proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /etl {root   html;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://etl_server_proxy/;
            proxy_redirect off;proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /exp {root   html;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://exp_server_proxy/office;
                        proxy_redirect off;proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /exl {root   html;index  index.html index.htm;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";proxy_pass  http://etl_server_proxy/;
                        proxy_redirect off;proxy_set_header Host  $http_host;proxy_set_header Cookie $http_cookie;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;client_max_body_size  300m;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}  }  
View Code

4、创建redis容器

说明:

redis的密码为123456

保护模式已经关闭

集群模式未开启

# docker run --name redis -h redis_tjsp -p 6379:6379 -d redis redis-server --requirepass "123456" --appendonly yes --protected-mode no

进入redis查看

# docker exec -it redis bash

[root@localhost tjsp]# docker run --name redis -h redis_tjsp -p 6379:6379 -d redis redis-server --requirepass "123456" --appendonly yes --protected-mode no
7626b4b8f3c1b2f8161341209f159167876cdc3fee8b3b90c180770dc426f3bd
[root@localhost tjsp]#
[root@localhost tjsp]# docker exec -it redis bash
root@redis_tjsp:/data#
root@redis_tjsp:/data# ls
appendonly.aof
root@redis_tjsp:/data#
root@redis_tjsp:/data# exit
exit
[root@localhost tjsp]#

5、构建jdk镜像

创建一个构建目录
# mkdir -p /home/tjsp/docker-server
编写Dockerfile文件
# cd /home/tjsp/docker-server/
# vi Dockerfile
FROM docker.io/huanwei/alpine-oraclejdk8
ADD app.jar /
EXPOSE 8082
ENTRYPOINT ["java","-D java.security.egd=file:/dev./urandom","-jar","/app.jar","--spring.profiles.active=dev207"]
VOLUME /tmp

构建镜像

# docker build -t cnbi-tjsp:latest .

[root@localhost tjsp]# cd docker-server/
[root@localhost docker-server]#
[root@localhost docker-server]# ls
Dockerfile  app.jar
[root@localhost docker-server]#
[root@localhost docker-server]# docker build -t cnbi-tjsp:latest .
Sending build context to Docker daemon    113MB
Step 1/5 : FROM docker.io/huanwei/alpine-oraclejdk8---> 28e66d63b8a4
Step 2/5 : ADD /app.jar //
 ---> 063e68f2e01a
Step 3/5 : EXPOSE 8082---> Running in 9ab4a3c0fc63
Removing intermediate container 9ab4a3c0fc63---> 7522d6d8ea7f
Step 4/5 : ENTRYPOINT ["java","-D java.security.egd=file:/dev./urandom","-jar","/app.jar"]---> Running in 3726768330c0
Removing intermediate container 3726768330c0---> d6ddeff92429
Step 5/5 : VOLUME /tmp---> Running in b7ac287ab1c9
Removing intermediate container b7ac287ab1c9---> 692144a74536
Successfully built 692144a74536
Successfully tagged cnbi-tjsp:latest
[root@localhost docker-server]#

查看构建的镜像

# docker images

[root@localhost docker-server]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
cnbi-tjsp                                              latest              692144a74536        3 minutes ago       280MB

6、创建djk镜像容器

创建挂载目录

# mkdir -p /home/tjsp/nginx/html/file

[root@localhost tjsp]# cd nginx/
[root@localhost nginx]# pwd
/home/tjsp/nginx
[root@localhost nginx]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@localhost nginx]#
[root@localhost nginx]# mkdir -p html/file
[root@localhost nginx]#
[root@localhost nginx]# ls
conf.d  fastcgi_params  html  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@localhost nginx]#
[root@localhost nginx]# ls html/
file
[root@localhost nginx]#

创建容器

# docker run -itd -p 8083:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp1 cnbi-tjsp

# docker run -itd -p 8084:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp2 cnbi-tjsp

解决高并发时添加

# docker run -itd -p 8087:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp3 cnbi-tjsp

查看启动情况

注意:启动前需要运行redis,nginx配置,tomcat前端

# docker ps

[root@localhost nginx]# docker run -itd -p 8083:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp1 cnbi-tjsp
ea2df7c4d1051978e67f04ea0d79b7e14081a60bf9c0adfd24b2884bdcefa213
[root@localhost nginx]#
[root@localhost nginx]# docker run -itd -p 8084:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp2 cnbi-tjsp
f0ed2dd79b9fc4797e84c8f8523660cd38b88fdd5b4ebd971b02eeaa18ce8d1e
[root@localhost nginx]#
[root@localhost nginx]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS                      PORTS                    NAMES
f0ed2dd79b9f        cnbi-tjsp                                              "java '-D java.secur…"   16 minutes ago      Up 5 seconds                0.0.0.0:8084->8082/tcp   tjsp2
ea2df7c4d105        cnbi-tjsp                                              "java '-D java.secur…"   17 minutes ago      Up 8 seconds                0.0.0.0:8083->8082/tcp   tjsp1
7626b4b8f3c1        redis                                                  "docker-entrypoint.s…"   About an hour ago   Up About an hour            0.0.0.0:6379->6379/tcp   redis
39e65baa524a        nginx:1.15.10                                          "nginx -g 'daemon of…"   About an hour ago   Up About a minute           0.0.0.0:7080->80/tcp     nginx_tjsp
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        2 hours ago         Up About a minute           0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        2 hours ago         Up About a minute           0.0.0.0:8081->8080/tcp   tomcat1

7、构建etl镜像

创建一个构建目录
# mkdir -p /home/tjsp/docker-etl
编写Dockerfile文件
# cd /home/tjsp/docker-etl/
# vi Dockerfile
FROM docker.io/huanwei/alpine-oraclejdk8
ADD app.jar /
ADD kettle5.4 /kettle5.4/
EXPOSE 8085
ENTRYPOINT ["java","-D java.security.egd=file:/dev./urandom","-jar","/app.jar","--spring.profiles.active=dev207"]
VOLUME /tmp

构建镜像

# docker build -t tjsp-etl:latest .

[root@localhost docker-etl]# ls
Dockerfile  app.jar  kettle5.4  kettle5.4.zip
[root@localhost docker-etl]#
[root@localhost docker-etl]#
[root@localhost docker-etl]# docker build -t tjsp-etl:latest .
Sending build context to Docker daemon  1.444GB
Step 1/6 : FROM docker.io/huanwei/alpine-oraclejdk8---> 28e66d63b8a4
Step 2/6 : ADD app.jar /---> 39b216eea6a0
Step 3/6 : ADD kettle5.4 /kettle5.4/---> dc9fd65a3fc6
Step 4/6 : EXPOSE 8085---> Running in 30a0948aea50
Removing intermediate container 30a0948aea50---> 7bd690fb1d8e
Step 5/6 : ENTRYPOINT ["java","-D java.security.egd=file:/dev./urandom","-jar","/app.jar"]---> Running in 94de1962e85f
Removing intermediate container 94de1962e85f---> 54d952d6afb5
Step 6/6 : VOLUME /tmp---> Running in 62b132e7c2ad
Removing intermediate container 62b132e7c2ad---> 01892f2a0e9c
Successfully built 01892f2a0e9c
Successfully tagged tjsp-etl:latest
[root@localhost docker-etl]#

查看构建的镜像

# docker images

[root@localhost docker-etl]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
tjsp-etl                                               latest              01892f2a0e9c        47 seconds ago      975MB
cnbi-tjsp                                              latest              7161944b3e59        23 hours ago        280MB

8、创建etl镜像容器

创建容器

# docker run -itd --name tjsp-etl -p 8085:8085 tjsp-etl --network host

[root@localhost ~]# docker run -itd --name tjsp-etl -p 8085:8085 tjsp-etl --network host
e14d155e53192bd1027ee2ed4c0b8b145e41a964d6de824b91c23df3997a6548
[root@localhost ~]#
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
e14d155e5319        tjsp-etl                                               "java '-D java.secur…"   11 seconds ago      Up 10 seconds       0.0.0.0:8085->8085/tcp   tjsp-etl
b4ded4008023        cnbi-tjsp                                              "java '-D java.secur…"   21 hours ago        Up 44 minutes       0.0.0.0:8087->8082/tcp   tjsp3
504c7fd1eec6        cnbi-tjsp                                              "java '-D java.secur…"   21 hours ago        Up 44 minutes       0.0.0.0:8084->8082/tcp   tjsp2
6b3c6ddee4c6        cnbi-tjsp                                              "java '-D java.secur…"   21 hours ago        Up 44 minutes       0.0.0.0:8083->8082/tcp   tjsp1
9fe494bf43bc        tomcat:8.5.30                                          "catalina.sh run"        25 hours ago        Up About an hour    0.0.0.0:8086->8080/tcp   tomcat3
7626b4b8f3c1        redis                                                  "docker-entrypoint.s…"   26 hours ago        Up 26 hours         0.0.0.0:6379->6379/tcp   redis
39e65baa524a        nginx:1.15.10                                          "nginx -g 'daemon of…"   26 hours ago        Up 25 hours         0.0.0.0:7080->80/tcp     nginx_tjsp
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        27 hours ago        Up 25 hours         0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        27 hours ago        Up 25 hours         0.0.0.0:8081->8080/tcp   tomcat1

9、进入etl镜像容器设置kettle并启动

添加kettle流程

# docker cp eas_to_brdb/ tjsp-etl:/root/

[root@localhost tjsp]# ll
total 0
drwxr-xr-x.  3 root root  77 Jul 24 14:28 docker-etl
drwxr-xr-x.  2 root root  39 Jul 23 15:46 docker-server
drwxr-xr-x.  4 root root  83 Jul 23 17:10 eas_to_brdb
drwxr-xr-x.  2 root root   6 Jul 24 09:38 etl_jar
drwxr-xr-x.  4 root root 211 Jul 23 18:40 nginx
drwxr-xr-x.  2 root root  21 Jul 24 11:45 tjsp_jar
drwxr-sr-x. 11 root root 197 May  5  2018 tomcat
drwxr-xr-x. 11 root root 197 Jul 23 09:11 tomcat1
drwxr-xr-x. 11 root root 197 Jul 23 09:20 tomcat2
drwxr-xr-x. 11 root root 197 Jul 23 11:46 tomcat3
[root@localhost tjsp]#
[root@localhost tjsp]#
[root@localhost tjsp]# docker cp eas_to_brdb/ tjsp-etl:/root/
[root@localhost tjsp]#

进入etl容器

# docker exec -it tjsp-etl /bin/sh

[root@localhost ~]# docker exec -it tjsp-etl /bin/sh
/ #
/ # ls
app.jar    bin        dev        etc        home       kettle5.4  lib        lib64      linuxrc    logs       media      mnt        proc       root       run        sbin       srv        sys        tmp        usr        var
/ #

设置kettle

/ # cd /root/
~ # ls -a
.                  ..                 .ash_history       .kettle            .oracle_jre_usage
~ #
~ # cd .kettle/
~/.kettle #
~/.kettle # ls
kettle.properties
~/.kettle #
# This file was generated by Pentaho Data Integration version 4.4.0.
#
# Here are a few examples of variables to set:
#
# PRODUCTION_SERVER = hercules
# TEST_SERVER = zeus
# DEVELOPMENT_SERVER = thor
#
# Note: lines like these with a # in front of it are comments
#
KETTLE_DEST_HOST=192.168.2.201
KETTLE_DEST_DATABASE=ORCL
KETTLE_DEST_PORT=1521
KETTLE_DEST_USER=BRDB_TJSP_1203
KETTLE_DEST_PASSWORD=cnbi2018KETTLE_EAS_HOST=192.168.2.206
KETTLE_EAS_DATABASE=orcl
KETTLE_EAS_PORT=1521
KETTLE_EAS_USER=TJEAS
KETTLE_EAS_PASSWORD=123456
~/.kettle # pwd
/root/.kettle
~/.kettle #

启动kettle

授权

# chmod -R 777 /kettle5.4/

启动

# sh /kettle5.4/kitchen.sh -file /root/eas_to_brdb/eas_to_brdb.kjb

~/.kettle # chmod -R 777 /kettle5.4/
~/.kettle # cd ..
~ #
~ #
~ # ls -l
total 0
drwxr-xr-x    4 root     root            83 Jul 23 09:10 eas_to_brdb
~ #
~ # sh /kettle5.4/kitchen.sh -file /root/eas_to_brdb/eas_to_brdb.kjb
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
2019/07/24 06:39:26 - Kitchen - Start of run.
2019/07/24 06:39:27 - eas_to_brdb - Start of job execution
2019/07/24 06:39:27 - eas_to_brdb - Starting entry [load_dimension_data]
2019/07/24 06:39:27 - load_dimension_data - Starting entry [set_period_variable]
2019/07/24 06:39:27 - set_period_variable - Loading transformation from XML file [file:///root/eas_to_brdb/load_dimension_data/set_period_variable.ktr]
2019/07/24 06:39:27 - set_period_variable - Dispatching started for transformation [set_period_variable]
2019/07/24 06:39:27 - 获取传递期间.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
2019/07/24 06:39:28 - 设置期间变量.0 - Setting environment variables...
2019/07/24 06:39:28 - 设置期间变量.0 - Set variable ORGPERIOD to value [201808]
2019/07/24 06:39:28 - 设置期间变量.0 - Set variable ENDPERIOD to value [201808]

10、查看etl服务是否启动成功

监听端口

# lsof -i:8085

[root@localhost ~]# lsof -i:8085
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
docker-pr 11347 root    4u  IPv6 20280487      0t0  TCP *:8085 (LISTEN)

查看容器启动后10行日志

# docker logs --tail 10 -tf tjsp-etl

[root@localhost ~]# docker logs --tail 10 -tf tjsp-etl
2019-07-24T04:30:02.092266671Z 2019-07-24 04:30:02.091  INFO 1 --- [isson-netty-1-2] o.r.c.pool.MasterPubSubConnectionPool    : 1 connections initialized for 192.168.2.207/192.168.2.207:6379
2019-07-24T04:30:02.101305132Z 2019-07-24 04:30:02.100 DEBUG 1 --- [           main] org.redisson.connection.DNSMonitor       : DNS monitoring enabled; Current masters: {redis://192.168.2.207:6379=192.168.2.207/192.168.2.207:6379}, slaves: {}
2019-07-24T04:30:02.727084940Z 2019-07-24 04:30:02.723 DEBUG 1 --- [           main] o.mybatis.spring.SqlSessionFactoryBean   : Scanned package: 'com.cnbi.cloud.etl.vo' for aliases
2019-07-24T04:30:02.816255252Z 2019-07-24 04:30:02.811  INFO 1 --- [           main] c.c.cloud.etl.config.FullSQLInterceptor  : mybatis intercept dialect:oracle
2019-07-24T04:30:02.816415640Z Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
2019-07-24T04:30:02.820326603Z 2019-07-24 04:30:02.817 DEBUG 1 --- [           main] o.mybatis.spring.SqlSessionFactoryBean   : Parsed configuration file: 'class path resource [mybatis/mybatis.cfg.xml]'
2019-07-24T04:30:02.936385155Z 2019-07-24 04:30:02.933 DEBUG 1 --- [           main] o.mybatis.spring.SqlSessionFactoryBean   : Parsed mapper file: 'class path resource [mybatis/mapper/formulaMapper.xml]'
2019-07-24T04:30:02.948821805Z 2019-07-24 04:30:02.947 DEBUG 1 --- [           main] o.mybatis.spring.SqlSessionFactoryBean   : Parsed mapper file: 'class path resource [mybatis/mapper/synchronousDataMapper.xml]'
2019-07-24T04:30:02.980705201Z 2019-07-24 04:30:02.979 DEBUG 1 --- [           main] o.mybatis.spring.SqlSessionFactoryBean   : Parsed mapper file: 'class path resource [mybatis/mapper/TableCensusMapper.xml]'
2019-07-24T04:30:07.086914939Z 2019-07-24 04:30:07.086  INFO 1 --- [           main] com.cnbi.cloud.ETLApplication            : Started ETLApplication in 12.023 seconds (JVM running for 13.086)

11、后台添加openoffice服务

Dockerfile文件变动如下:

FROM centos
ADD app.jar /
ADD Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz /tmp/
ADD chinses.tar.gz /usr/share/fonts/
RUN cd /tmp && \
yum install -y zh-CN/RPMS/*.rpm && \
yum install -y java-1.8.0-openjdk.x86_64 && \
#yum install -y java-1.8.0-openjdk*
yum clean all && \
rm -rf zh-CN && \
cd /usr/share/fonts/ && \
#tar zxvf chinses.tar.gz && \
chmod -R 755 /usr/share/fonts && \
mkfontscale && \
mkfontdir && \
fc-cache -fv
EXPOSE 8082
ENV JAVA_HOME /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
ENTRYPOINT ["java","-D java.security.egd=file:/dev./urandom","-jar","/app.jar","--spring.profiles.active=dev207"]
VOLUME /tmp

重新构建镜像

# docker build -t cnbi-tjsp:v3 .

[root@localhost ~]# cd /home/tjsp/docker-server/
[root@localhost docker-server]#
[root@localhost docker-server]# ls
Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz  Dockerfile  Dockerfile.bak1  app.jar  chinses.tar.gz
[root@localhost docker-server]#

查看镜像文件

[root@localhost docker-server]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
cnbi-tjsp                                              v3                  74235ac7e25d        2 hours ago         1.28GB
cnbi-tjsp                                              v2                  20537b2847fc        4 hours ago         288MB

根据镜像创建容器

# docker run -itd -p 8083:8082 -v /home/tjsp/nginx/html/file/:/home/upload/ --name tjsp1 cnbi-tjsp

12、office服务添加openoffice服务

创建一个构建镜像目录

# mkdir -p /home/tjsp/docker-office

[root@docker-servers ~]# cd /home/tjsp/
[root@docker-servers tjsp]#
[root@docker-servers tjsp]# ls
docker-etl  docker-office  docker-server  nginx  nginx.tar.gz  tomcat  tomcat1  tomcat2  tomcat3  tomcat.tar.gz
[root@docker-servers tjsp]#
[root@docker-servers tjsp]# cd docker-office/
[root@docker-servers docker-office]#
[root@docker-servers docker-office]# ls
Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz  apache-tomcat-8.0.30.tar.gz  chinses.tar.gz  Dockerfile

Dockerfile文件如下:

FROM centos:7MAINTAINER djl "djl@cnbisoft.com"ADD Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz /tmp/
ADD chinses.tar.gz /usr/share/fonts/
ADD apache-tomcat-8.0.30.tar.gz /usr/local/WORKDIR /tmp/
RUN yum install -y zh-CN/RPMS/*.rpm && \
yum install -y java-1.8.0-openjdk.x86_64 && \
yum clean all && \
rm -rf zh-CNWORKDIR /etc/
RUN mv /etc/localtime /etc/localtime.bak && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeWORKDIR /usr/share/fonts/
RUN chmod -R 755 /usr/share/fonts && \
mkfontscale && \
mkfontdir && \
fc-cache -fv
EXPOSE 8080
ENV JAVA_HOME /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
CMD sh /usr/local/tomcat/bin/catalina.sh run

构建镜像

# docker build -t tjsp-office:v1 .

查看镜像

# docker images

[root@docker-servers ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
tjsp-office                           v1                  045b278abebc        About an hour ago   1.18 GB
tjsp-etl                              v1                  910ec0ec9bb2        15 hours ago        975 MB
cnbi-tjsp                             v1                  138868acba1e        20 hours ago        1.42 GB
nginx                                 1.15.10             2bcb04bdb83f        4 months ago        109 MB
centos                                7                   9f38484d220f        4 months ago        202 MB
redis                                 5.0.3               0f88f9be5839        5 months ago        95 MB
tomcat                                8.5.30              38bdcf7a367c        15 months ago       546 MB
docker.io/huanwei/alpine-oraclejdk8   latest              28e66d63b8a4        2 years ago         167 MB

根据镜像创建容器

# docker run -p 8086:8080 --name tjsp_office -h tjsp_office -v /home/tjsp/tomcat3:/usr/local/tomcat -d tjsp-office:v1

四、后期修改维护更新说明

1、查看项目运行的所有容器

# docker ps

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
b4ded4008023        cnbi-tjsp                                              "java '-D java.secur…"   26 hours ago        Up 6 hours          0.0.0.0:8087->8082/tcp   tjsp3
504c7fd1eec6        cnbi-tjsp                                              "java '-D java.secur…"   26 hours ago        Up 6 hours          0.0.0.0:8084->8082/tcp   tjsp2
6b3c6ddee4c6        cnbi-tjsp                                              "java '-D java.secur…"   26 hours ago        Up 6 hours          0.0.0.0:8083->8082/tcp   tjsp1
9fe494bf43bc        tomcat:8.5.30                                          "catalina.sh run"        30 hours ago        Up 6 hours          0.0.0.0:8086->8080/tcp   tomcat3
7626b4b8f3c1        redis                                                  "docker-entrypoint.s…"   32 hours ago        Up 32 hours         0.0.0.0:6379->6379/tcp   redis
39e65baa524a        nginx:1.15.10                                          "nginx -g 'daemon of…"   32 hours ago        Up 31 hours         0.0.0.0:7080->80/tcp     nginx_tjsp
78b5482a0a95        tomcat:8.5.30                                          "catalina.sh run"        33 hours ago        Up 2 hours          0.0.0.0:8082->8080/tcp   tomcat2
d41f7b69ebbf        tomcat:8.5.30                                          "catalina.sh run"        33 hours ago        Up 2 hours          0.0.0.0:8081->8080/tcp   tomcat1

2、查看项目所需要的镜像

# docker images

[root@localhost ~]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
tjsp-etl                                               latest              01892f2a0e9c        4 hours ago         975MB
cnbi-tjsp                                              latest              7161944b3e59        26 hours ago        280MB
nginx                                                  1.15.10             2bcb04bdb83f        3 months ago        109MB
redis                                                  latest              82629e941a38        6 months ago        95MB
tomcat                                                 8.5.30              38bdcf7a367c        14 months ago       546MB
huanwei/alpine-oraclejdk8                              latest              28e66d63b8a4        2 years ago         167MB

3、设置容器开机自启动

# docker update --restart=always xxx

[root@localhost ~]# docker update --restart=always tjsp1
tjsp1
[root@localhost ~]# docker update --restart=always tjsp2
tjsp2
[root@localhost ~]# docker update --restart=always tjsp3
tjsp3
[root@localhost ~]# docker update --restart=always tomcat1
tomcat1
[root@localhost ~]# docker update --restart=always tomcat2
tomcat2
[root@localhost ~]# docker update --restart=always tomcat3
tomcat3
[root@localhost ~]# docker update --restart=always redis
redis
[root@localhost ~]# docker update --restart=always nginx_tjsp
nginx_tjsp
[root@localhost ~]#

参考博客:

用 Docker 构建、运行、发布来一个 Spring Boot 应用

https://blog.csdn.net/kkkloveyou/article/details/50942275

end

转载于:https://www.cnblogs.com/djlsunshine/p/11230246.html

相关文章:

父子表关联在窗体中的绑定显示和浏览

private BindingManagerBase bm1 null;private BindingManagerBase bm2 null;private void DataScanInForm2_Load(object sender, EventArgs e) {string sqlString1 "select * from 客户";string sqlString2 "select * from 订单";string[] sql…

【Excel】使用Excel函数计算二项分布泊松分布概率

例: 计算如下参数的二项分布和泊松分布 二项分布 1、选中单元框,添加函数 2、选中统计类函数 3、选择二项分布概率函数 4、输入相应的参数 注: (1)在输入参数时点击相应的单元格即可 (2)最后…

万能android调用webservice方法——参数类型不受限制

说明:只是个例子,扩展性、复用性不好,只是提出一个思路,返回的XML解析代码写的也很烂聪明的你,拿来代码的时候,肯定能解决这些问题关键代码: try{//发帖机原理,模拟浏览器finalStrin…

Vue轮播图插件---Vue-Awesome-Swiper

轮播图插件 Vue-Awesome-Swiper 地址:https://github.com/surmon-china/vue-awesome-swiper 安装:npm install vue-awesome-swiper --save 局部引入:import swiper/dist/css/swiper.cssimport { swiper, swiperSlide } from vue-awesome-swip…

linux下遇到的小问题与解决方法

Linux下执行.sh脚本错误:bin/sh^M: bad interpreter: No such file or directory 原因是.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。 转行文件的编码格式: 1、确保用户对文件有读写及执行权限 oraclelinux-106:~/RMAN/bin&g…

阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_1_List集合_介绍常用方法...

有序的,还包含索引,允许有重复的值、 add 打印出来的不是地址,说明重写了toString的方法 remove方法 返回的是被移除的元素 set方法 get 索引越界异常 几种越界的异常转载于:https://www.cnblogs.com/wangjunwei/p/11237813.html

【蓝桥java】进制与整除之天平秤重

题目: 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81 则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘…

分享一个C#使用AT指令控制语音猫的例子

阅读全文:http://www.cckan.net/forum.php?modviewthread&tid61 先来说说 最近公司让开发一个语音猫充值的软件,就是拨打10086(虚拟)进行话费充值操作,虚拟流程如下; 1.先拨通10086 2.按1进行话费充值…

个人银行账户管理程序

这个程序是一个银行账户管理的程序,是用C来实现程序功能的,该程序包含六个文件,其中有date.h头文件 是日期类的头文件,date.cpp是日期类的实现文件,accumulator.h是按日将数值累加的accumulator类的头文件,…

两个关于水花的测试。

海面上的水花的特效,水花是在浪尖处发射出来的,目前还没有让发射参数自动化的方法,都是表达式。一旦改变浪的性质,发射的粒子就要重新写动态了。 Splash on the ocean emitted from the crisp faces on top of the wave, the whit…

泛型在三层中的应用

一说到三层架构,我想大家都了解,这里就简单说下,三层架构一般包含:UI层、DAL层、BLL层,其中每层由Model实体类来传递,所以Model也算是三层架构之一了,例外为了数据库的迁移或者更OO点&#xff0…

【蓝桥java】进制与整除之尼姆堆

题目: 有3堆硬币,分别是3,4,5 二人轮流取硬币。 每人每次只能从某一堆上取任意数量。 不能弃权。 取到最后一枚硬币的为赢家。 求先取硬币一方有无必胜的招法。 在提供代买前做几条补充: (1)这里有一个不是很好理解的…

RSA遭骇 Token 换?不换?

RSA SecurID Token召回更换的动作仍然持续进行中,根据外电报导,美国有些企业已经要求更换Token,如花旗集团、美国银行、富国银行、摩根大通、澳盛银行、澳洲西太平洋银行。于此同时,一些竞争供应商也动作频频,例如Safe…

二叉树的镜像(数组,前后 遍历重建二叉树)

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。输入描述: 二叉树的镜像定义&#xff1a;源二叉树 8/ \6 10/ \ / \ 5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 #include <iostream> #include <cstdio> #include <cstdlib> #in…

tp5实现Redis的简单使用

方法1&#xff1a; Controller <?php namespace app\index\controller;use think\Controller; use think\session\driver\Redis;class Index extends Controller {public function index(){$redis new Redis();if(!$redis->has(str)){var_dump($redis->set(str,this…

Linux下getsockopt/setsockopt 函数说明

【getsockopt/setsockopt系统调用】 功能描述&#xff1a; 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中&#xff0c;它们总会出现在最上面的套接字层。当操作套接字选项时&#xff0c;选项位于的层和选项的名称必须给出。为了操作套接字层的选项…

【蓝桥java】进制与整除之最大公约数 最小公倍数

补充&#xff1a; &#xff08;1&#xff09;欧几里得定理&#xff08;辗转相除法&#xff09;&#xff1a;A和B的最大公约数 B和A%B 的最大公约数 &#xff08;2&#xff09;将两个数乘起来再除以最大公约数就是最小公倍数 package cn.zzunit.jnvi;/***寻找最大公约数* autho…

学习C#要养成的好习惯

1. 避免将多个类放在一个文件里面。2. 一个文件应该只有一个命名空间&#xff0c;避免将多个命名空间放在同一个文件里面。3. 一个文件最好不要超过500行的代码&#xff08;不包括机器产生的代码&#xff09;。4. 一个方法的代码长度最好不要超过25行。5. 避免方法中有超过5个参…

3.1、final、finally、 finalize

final 可以用来修饰类、方法、变量&#xff0c;分别有不同的意义&#xff0c;final 修饰的 class 代表不可以继承扩展&#xff0c;final 的变量是不可以修改的&#xff0c;而 final 的方法也是不可以重写的&#xff08;override&#xff09;。 finally 则是 Java 保证重点代码一…

Android模拟器学framework和driver之传感器篇1(linux sensor driver)

对于android模拟器开发环境的搭建这里我就不多说了&#xff0c;网上google下一大堆&#xff0c;还有就是android 模拟器的kernel使用的是goldfish的kernel&#xff0c;可以使用git得到源码&#xff0c;然后就可以编译了&#xff0c;大家还是可以参考罗老师的博客。。。 在这里我…

【java】Lombok的使用

介绍&#xff1a;lombok在编译entity文件时自动生成get set toString hashCode等方法&#xff0c;这样方法生成就不用写在代码里了&#xff0c;可以简化代码。 使用方法&#xff1a; 一、在pom文件里引入lombok的依赖 代码实现&#xff1a; <dependency><groupId&g…

自己开发开源jquery插件--给jquery.treeview加上checkbox

很多时候需要把树状的数据显示除来&#xff0c;比如分类&#xff0c;中国省份、城市信息&#xff0c;等&#xff0c;因此这方面的javascript插件也有很多.比如性能优异的jquery.treeview和国人开发的功能强大的zTree. 我最近在一个项目中用到了jquery.treeview&#xff0c;但是…

SQL Server 2000安装时不出现安装界面,进程中存在解决

在XP和Server 2003系统中安装SQL Server 2000过程中&#xff0c;点击安装后&#xff0c;一直不出现安装界面&#xff0c;查看进程中也有&#xff0c;一直无反应。 解决办法&#xff1a; 首先重新启动机器&#xff0c;或者任务管理器里面结束2个sql进程 1. 在 SQLServer 安装向导…

Apache2.4部署python3.6+django2.0项目

一、安装apache Apache是非常有名的web服务器软件&#xff0c;如果想让我们web项目运行几乎离不开它。 Apache官方网站&#xff1a;http://httpd.apache.org/ 根据自己的环境&#xff0c;选择相应的版本进行下载。apache 官网没有windows 64位版本&#xff0c;可以通过下面的链…

我是如何有效的避免测试漏测?

漏测&#xff0c;指在产品缺陷在测试过程中没有被发现&#xff08;尤其是测试环境可以重现的缺陷&#xff09;&#xff0c;而是在版本发布后或者在用户使用后发现并反馈回来的缺陷。可以说&#xff0c;漏测的问题是测试管理者最头痛的问题。因为出现漏测&#xff0c;一来给客户…

总结是学习最好的方式(转)

总结是学习最好的方式 最近一直想总结来华为公司这3个多月自己有什么收获&#xff0c;但又想不明白自己收获了什么&#xff1f;说技术吧&#xff0c;也谈不上有多大的提高&#xff1b;说人际交流&#xff0c;也许还有些退步&#xff1b;说薪资存款吧&#xff0c;哎不谈了。想着…

【转载】JUnit各个注解的含义

转自&#xff1a;https://blog.csdn.net/weixin_38500014/article/details/84393775

silverlight、wpf中 dispatcher和timer区别

相同点&#xff1a;都是定时执行任务的计时器&#xff0c;都可以使用。 不同点&#xff1a;Timer运行在非UI 线程&#xff0c;如果Timer需要更新UI的时候&#xff0c;需要调用 Invoke或者 BeginInvoke DispatcherTimer运行在UI 线程&#xff0c;处理的 Dispatcher 队列中的计时…

web开发基础

web开发:所谓web开发就是基于浏览器服务器的开发下面将web开发基础知识作个总结:1.http协议:是建立在TCP协议上的,基于请求响应的模型2.http请求:面试题:说说get与post的区别a.传递数据量:get只能传递1kb以下的数据,post可以传递大数据b.安全性:get请求,如果携带参数,参数会直接…

让ubuntu下的eclipse支持GBK编码

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://leaze.blog.51cto.com/83088/195584今天&#xff0c;把windows下的工程导入到了Linux下eclipse中&#xff0c;由于以前的工程代码&#x…