Java部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


FROM openjdk:8-jdk
LABEL maintainer=leifengyang


# docker run -e PARAMS="--server.port 9090"
ENV PARAMS="--server.port=8080 --spring.profiles.active=prod --spring.cloud.nacos.discovery.server-addr=ry-nacos.ry:8848 --spring.cloud.nacos.config.server-addr=ry-nacos.ry:8848 --spring.cloud.nacos.config.namespace=prod --spring.cloud.nacos.config.file-extension=yml"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

COPY target/*.jar /app.jar
EXPOSE 8080

#
ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]

规则:

1、容器默认以8080端口启动

2、时间为CST

3、环境变量 PARAMS 可以动态指定配置文件中任意的值

4、nacos集群内地址为 his-nacos.his:8848 ,nacos 2.0以上版本需要开启多个端口,保证 8848 9848 9849 这几个端口能正常访问,这样就可以通过集群内环境实现

5、微服务默认启动加载 nacos中 服务名-激活的环境.yml 文件,所以线上的配置可以全部写在nacos中。

MySQL部署

  1. 下载镜像
1
docker pull nacos/nacos-server:v2.1.1
  1. 创建容器,设置端口映射、目录映射
    1
    2
    3
    4
    5
    6
    7
    8
    9

    docker run --name nacos-quick -d \
    -v /www/tools/nacos/conf:/home/nacos/init.d \
    -p 8848:8848 -p 9848:9848 -p 9849:9849 \
    -e MODE=standalone -e MYSQL_SERVICE_HOST=47.99.69.207 -e MYSQL_SERVICE_DB_NAME=ry-config \
    -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=qwe123456 \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    nacos/nacos-server:v2.1.1

Redis部署

Redis部署

  1. 搜索Redis 镜像
1
docker search redis
  1. 拉取Redis 镜像

    1
    docker pull redis:5.0
  2. 创建容器,设置端口映射、目录映射

    1
    docker run -id --name=c_redis -p 6379:6379 redis:5.0
  3. 使用外部机器连接redis

1
redis-cli.exe -h 192.168.187.129 -p 6379

复杂安装Redis

  1. 获取Redis版本

  1. 拉取Redis

以上这条命令是拉取最新版本的redis,如果想拉取对应版本使用

  1. 创建挂载目录即配置文件

1
2
mkdir -p /www/tools/redis/data /home/tools/redis/conf 
touch /www/tools/redis/data /home/tools/redis/conf/redis.conf

  1. 修改配置文件

1
vi /home/tools/redis/conf/redis.conf

添加如下内容

1
2
3
4
#bind 127.0.0.1
daemonize no
protected-mode no
requirepass 123456
  1. 运行容器

1
2
3
docker run -d --name redis -p 16379:6379 \
-v /home/tools/redis/conf/redis.conf:/redis.conf \
-v /home/tools/redis/data:/data redis:5.0.8 redis-server --appendonly yes

  1. 查看

1
docker ps

Nginx部署

3.Nginx部署

  1. 搜索Nginx 镜像

    1
    docker search nginx
  2. 拉取mysql镜像

    1
    docker pull nginx
  3. 创建容器,设置端口映射、目录映射

    1
    2
    3
    4
    5
    6
    7
    #在/root目录下创建nginx目录用于存储nginx数据信息
    mkdir ~/nginx
    cd ~/nginx
    mkdir conf
    cd conf
    #在~/nginx/conf/下创建nginx.conf文件,粘贴下面代码块的内容
    vim nginx.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    user  nginx;
    worker_processes 1;

    error_log /var/log/nginx/error.log warn;
    pid /var/run/nginx.pid;

    events {
    worker_connections 1024;
    }

    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    #tcp_nopush on;

    keepalive_timeout 65;

    #gzip on;

    include /etc/nginx/conf.d/*.conf;
    }
    1
    2
    3
    4
    5
    6
    docker -run -id --name=c_nginx \
    -p 80:800 \
    -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v $PWD/logs:/var/log/nginx \
    -v $PWD/html:/usr/share/nginx/html \
    nginx
    • 参数说明:
      • -p 80:800:将容器的80端口映射到宿主机的80端口
      • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的/conf/nginx.conf挂载到容器的:/etc/nginx/nginx.conf配置目录
      • -v $PWD/html:/usr/share/nginx/html:将主机当前目录挂载到容器的/val/log/nginx日志目录

使用外部机器访问nginx

Tomcat部署

2.Tomcat部署

  1. 搜索Tomcat 镜像

    1
    docker search tomcat
  2. 拉取mysql镜像

    1
    docker pull tomcat
  3. 创建容器,设置端口映射、目录映射

    1
    2
    3
    #在/root目录下创建tomcat目录用于存放tomcat数据信息
    mkdir ~/tomcat
    cd ~/tomcat
    1
    2
    3
    4
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    • 参数说明:
      • -p 8080:8080:将容器的8080端口映射到主机的8080端口
      • -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps

最后使用外部机器访问tomcat

MySQL部署

1 MySQL部署

1.1案例:需求
  • 在Docker 容器中部署MySQL,并通过外部MySQL 客户端操作MySQL Server
1.2 案例:实现
  1. 搜索mysql镜像
  2. 拉取mysql镜像
  3. 创建容器

操作容器中的mysql

1.3 问题及解决方案
  • 容器内的网络服务和外部机器不能直接通信
  • 外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信
  • 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的端口,从而间接访问容器的服务
  • 这种操作称为:端口映射
1.4 部署MySQL
  1. 搜索mysql镜像

    1
    docker search mysql
  2. 拉取mysql镜像

    1
    docker pull mysql:5.6
  3. 创建容器,设置端口映射、目录映射

    1
    2
    3
    # 在/root目录下创建mysql目录用于存储mysql数据信息
    mkdir ~/mysql
    cd ~/mysql
    1
    2
    3
    4
    5
    6
    7
    8
    docker run -id \
    -p 3306:3306 \
    --name=mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql
    • 参数说明
      • -p 3307:3306:将容器的3306端口映射到宿主机的3307端口
      • --v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的conf/my.cnf挂载到容器/etc/mysql/my.cnf配置目录
      • -v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs目录日志
      • -v $PWD/data:/var/lib/mysql:将主机当前目录下的data目录挂载到容器的/var/lib/mysql数据目录
      • -e MYSQL_ROOT_PASSWORD=123456:初始化root 用户密码

使用外部机器访问MySQL


:D 一言句子获取中...