68.Docker常用命令 以及DockerConpose部署Java项目(jdk、mysql、nginx)

image.png
docker pull
拉取镜像
docker push
推送镜像到DockerRegistry
docker images
查看本地镜像
docker rmi
删除本地镜像
docker run
创建并运行容器(不能重复创建)
docker stop
停止指定容器
docker start
启动指定容器
docker restart
重新启动容器
docker rm
删除指定容器
docker ps
查看容器
docker logs
查看容器运行日志
docker exec
进入容器
docker save
保存镜像到本地压缩文件
docker load
加载本地压缩文件到镜像
docker inspect
查看容器详细信息

数据卷的相关命令有:


image.png
docker volume create
创建数据卷
docker volume ls
查看所有数据卷
docker volume rm
删除指定数据卷
docker volume inspect
查看某个数据卷的详情
docker volume prune
清除数据卷

网络相关


image.png
docker network create
创建一个网络
docker network ls
查看所有网络
docker network rm
删除指定网络
docker network prune
清除未使用的网络
docker network connect
使指定容器连接加入某网络
docker network disconnect
使指定容器连接离开某网络
docker network inspect
查看网络详细信息

开始准备配置 这是一会会使用的目录结构


image.png

Dockerfile

FROM centos:7

# 添加 JDK 到镜像中
COPY jdk17.tar.gz /usr/local/
RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ &&  rm /usr/local/jdk17.tar.gz

# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk-17.0.10
ENV PATH=$JAVA_HOME/bin:$PATH

#阿里云oss环境配置
ENV OSS_ACCESS_KEY_ID=xx
ENV OSS_ACCESS_KEY_SECRET=xx

#统一编码
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

# 创建应用目录
RUN mkdir -p /app/uploads
WORKDIR /app

# 复制应用 JAR 文件到容器
COPY  wpsserver.jar  wpsserver.jar

# 暴露端口
EXPOSE 8080

# 运行命令
ENTRYPOINT ["java","-jar","/app/wpsserver.jar"]

docker-compose.yml

services:
  mysql:
    image: mysql:8
    container_name: wpsmysql
    ports:
      - "3307:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: wpsoffice
    volumes:
      - "/usr/local/wpsweboffice/mysql/conf:/etc/mysql/conf.d"
      - "/usr/local/wpsweboffice/mysql/data:/var/lib/mysql"
      - "/usr/local/wpsweboffice/mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - wpsnetwork
  wpsserver:
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: wpsserver
    environment:
      - DB_HOST=mysql
      - DB_PORT=3307
      - DB_DATABASE=wpsoffice
      - DB_USERNAME=root
      - DB_PASSWORD=1234
      - DB_DRIVER=com.mysql.cj.jdbc.Driver
    ports:
      - "8080:8080"
    volumes:
      - /usr/local/wpsweboffice:/app/uploads
    networks:
      - wpsnetwork
    depends_on:
      - mysql
  nginx:
    image: nginx:1.20.2
    container_name: nginxwps
    ports:
      - "80:80"
#数据挂载
    volumes:
      - "/usr/local/wpsweboffice/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      - "/usr/local/wpsweboffice/nginx/html:/usr/share/nginx/html"
#等待wpsserver部署完成再不是nginx
    depends_on:
      - wpsserver
    networks:
      - wpsnetwork
#网络创建
networks:
  wpsnetwork:
    name: wpsnetwork
    #external: true  放开加入现有网络已经有的网络wpsnetwork

ngxin 两个目录


image.png

注意 nginx.conf 地址配置


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 10m;
        
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }

        location ^~ /api/ {
            rewrite ^/api/(.*)$ /$1 break;
                        #wpsserver  是docker局域网地址
            proxy_pass http://wpsserver:9000;
        }
    }

}

mysql 的init内是初始化数据库sql文件


image.png

前期准备已完成 ssh工具连接你的服务器
将所有使用的文件上传到/usr/local/wpsweboffice

image.png

执行 docker images 和 docker ps -a
查看是否已经有已经配置失败的镜像和容器
有的话 删除
没有的继续
执行

docker compose up -d

如果报错可能会生成镜像 修改之后记得删除镜像再执行
注意:java jar包打包之前mysql连接地址修改,上传文件目录修改并挂载,nginx配置文件端口地址,服务器端内 mysql ngxin 服务都要在一个network

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容