DockerFile编写
webchat-act 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-act.jar /app/webchat-act.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8025
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-act.jar"]
容器启动命令
docker run -d \
-p 8025:8025 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-act/config:/app/config \
--name webchat-act \
webchat-act服务镜像名称/镜像id
Jar包减压命令jar -xf ...
jar -xf /path/to/webchat-act.jar BOOT-INF/classes/bootstrap.yml
webchat-admin 服务
# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-admin.jar /app/webchat-admin.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8010
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-admin.jar"]
容器启动命令
docker run -d \
-p 8010:8010 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-admin/config:/app/config \
--name webchat-admin \
webchat-admin服务镜像名称/镜像id
webchat-aigc 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-aigc.jar /app/webchat-aigc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8019
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-aigc.jar"]
容器启动命令
docker run -d \
-p 8019:8019 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-aigc/config:/app/config \
--name webchat-aigc \
webchat-aigc服务镜像名称/镜像id
webchat-api 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-api.jar /app/webchat-api.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8026
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-api.jar"]
容器启动命令
docker run -d \
-p 8026:8026 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-api/config:/app/config \
--name webchat-api \
webchat-api服务镜像名称/镜像id
webchat-client-chat 服务
# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-chat.jar /app/webchat-client-chat.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8082
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-chat.jar"]
容器启动命令
docker run -d \
-p 8082:8082 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-client-chat/config:/app/config \
--name webchat-client-chat \
webchat-client-chat服务镜像名称/镜像id
webchat-client-mall 服务
# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-mall.jar /app/webchat-client-mall.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8083
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-mall.jar"]
容器启动命令
docker run -d \
--memory=512m \
--memory-swap=512m \
-p 8083:8083 \
-v /opt/project/webchat/webchat-client-mall/config:/app/config \
--name webchat-client-mall \
webchat-client-mall服务镜像名称/镜像id
webchat-client-payment 服务
# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-payment.jar /app/webchat-client-payment.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8888
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-payment.jar"]
容器启动命令
docker run -d \
-p 8888:8888 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-client-payment/config:/app/config \
--name webchat-client-payment \
webchat-client-payment服务镜像名称/镜像id
webchat-connect 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-connect.jar /app/webchat-connect.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8088
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-connect.jar"]
容器启动命令
docker run -d \
-p 8088:8088 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-connect/config:/app/config \
--name webchat-connect \
webchat-connect服务镜像名称/镜像id
webchat-gateway 服务
# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-gateway.jar /app/webchat-gateway.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms256m -Xmx256m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8001
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-gateway.jar"]
容器启动命令
docker run -d \
-p 8001:8001 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-gateway/config:/app/config \
--name webchat-gateway \
webchat-gateway服务镜像名称/镜像id
webchat-netty-gateway 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-netty-gateway.jar /app/webchat-netty-gateway.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 88
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-netty-gateway.jar"]
容器启动命令
docker run -d \
-p 88:88 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-netty-gateway/config:/app/config \
--name webchat-netty-gateway \
webchat-netty-gateway服务镜像名称/镜像id
webchat-netty-server 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-netty-server.jar /app/webchat-netty-server.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 9999
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-netty-server.jar"]
容器启动命令
docker run -d \
-p 9999:9999 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-netty-server/config:/app/config \
--name webchat-netty-server \
webchat-netty-server服务镜像名称/镜像id
webchat-pay 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-pay.jar /app/webchat-pay.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8014
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-pay.jar"]
容器启动命令
docker run -d \
-p 8014:8014 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-pay/config:/app/config \
--name webchat-pay \
webchat-pay服务镜像名称/镜像id
webchat-pgc 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-pgc.jar /app/webchat-pgc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8018
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-pgc.jar"]
容器启动命令
docker run -d \
--memory=612m \
--memory-swap=612m \
-p 8018:8018 \
-v /opt/project/webchat/webchat-pgc/config:/app/config \
--name webchat-pgc \
webchat-pgc服务镜像名称/镜像id
webchat-search 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-search.jar /app/webchat-search.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8089
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-search.jar"]
容器启动命令
docker run -d \
--memory=512m \
--memory-swap=512m \
-p 8089:8089 \
-v /opt/project/webchat-search/config:/app/config \
--name webchat-search \
webchat-search服务镜像名称/镜像id
webchat-sso 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-sso.jar /app/webchat-sso.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8079
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-sso.jar"]
容器启动命令
docker run -d \
-p 8079:8079 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-sso/config:/app/config \
--name webchat-sso \
webchat-sso服务镜像名称/镜像id
webchat-ugc 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-ugc.jar /app/webchat-ugc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8017
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-ugc.jar"]
容器启动命令
docker run -d \
-p 8017:8017 \
--memory=712m \
--memory-swap=712m \
-v /opt/project/webchat/webchat-ugc/config:/app/config \
--name webchat-ugc \
webchat-ugc服务镜像名称/镜像id
webchat-user 服务
# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-user.jar /app/webchat-user.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8025
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-user.jar"]
容器启动命令
docker run -d \
-p 8020:8020 \
--memory=612m \
--memory-swap=612m \
--restart=always \
-v /opt/project/webchat/webchat-user/config:/app/config \
--name webchat-user \
webchat-user服务镜像名称/镜像id
容器一键启停脚本
#!/bin/bash
# ================== 基础配置 ==================
# 优先启动的核心容器
CORE_CONTAINERS=(
webchat-gateway
webchat-netty-gateway
webchat-netty-server
webchat-connect
)
# 其他容器(顺序无要求)
OTHER_CONTAINERS=(
webchat-act
webchat-admin
webchat-aigc
webchat-api
webchat-client-chat
webchat-client-mall
webchat-client-payment
webchat-pay
webchat-pgc
webchat-search
webchat-sso
webchat-ugc
webchat-user
)
# ================== 通用方法 ==================
container_exists() {
docker ps -a --format '{{.Names}}' | grep -w "$1" > /dev/null
}
container_running() {
docker ps --format '{{.Names}}' | grep -w "$1" > /dev/null
}
start_container() {
local name=$1
if ! container_exists "$name"; then
echo "⚠️ 容器不存在,跳过:$name"
return
fi
if container_running "$name"; then
echo "✅ 已在运行:$name"
else
echo "▶️ 启动容器:$name"
docker start "$name"
fi
}
stop_container() {
local name=$1
if container_running "$name"; then
echo "⏹️ 停止容器:$name"
docker stop "$name"
else
echo "ℹ️ 未运行:$name"
fi
}
# ================== 操作逻辑 ==================
start_all() {
echo "===== 启动核心容器 ====="
for c in "${CORE_CONTAINERS[@]}"; do
start_container "$c"
done
echo
echo "===== 启动其他容器 ====="
for c in "${OTHER_CONTAINERS[@]}"; do
start_container "$c"
done
}
stop_all() {
echo "===== 停止所有容器 ====="
for c in "${OTHER_CONTAINERS[@]}"; do
stop_container "$c"
done
for c in "${CORE_CONTAINERS[@]}"; do
stop_container "$c"
done
}
status_all() {
echo "===== 容器状态 ====="
docker ps -a --format "table {{.Names}}\t{{.Status}}"
}
# ================== 入口 ==================
case "$1" in
start)
start_all
;;
stop)
stop_all
;;
restart)
stop_all
echo
start_all
;;
status)
status_all
;;
*)
echo "用法:$0 {start|stop|restart|status}"
exit 1
;;
esac
给这个文件赋予执行权限
chmod +x webchat-docker.sh
使用方式
# 一键启动
./webchat-docker.sh start
# 一键停止
./webchat-docker.sh stop
# 一键重启
./webchat-docker.sh restart
# 查看状态
./webchat-docker.sh status
nginx配置
gateway.conf
server {
listen 80;
server_name webchat.com;
# OAuth 前端
location /webchat-oauth/ {
proxy_pass http://192.168.216.20:5000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Client 前端(WebSocket)
location /webchat-client/ {
proxy_pass http://192.168.216.20:5001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Admin 前端
location /webchat-admin/ {
proxy_pass http://192.168.216.20:5002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Mall 前端(WebSocket)
location /webchat-mall/ {
proxy_pass http://192.168.216.20:5003/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Payment 前端
location /webchat-payment/ {
proxy_pass http://192.168.216.20:5004/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# sso-service
location /sso-service/ {
proxy_pass http://192.168.216.20:8001/sso-service/;
proxy_set_header Host $host;
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;
}
# admin-service
location /admin-service/ {
proxy_pass http://192.168.216.20:8001/admin-service/;
proxy_set_header Host $host;
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;
}
# 转发 /connect-service/ws/ 下的请求
location /connect-service/ws/ {
proxy_pass http://192.168.216.20:8001/connect-service/ws/;
# 必须的 WebSocket 头设置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
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-service 下的请求
location /client-service/ {
proxy_pass http://192.168.216.20:8001/client-service/;
proxy_set_header Host $host;
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-service/ 下的请求
location /aigc-service/event/ {
proxy_pass http://192.168.216.20:8001/aigc-service/event/;
proxy_set_header Host $host;
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;
}
# 转发 /mall-service 下的请求
location /mall-service/ {
proxy_pass http://192.168.216.20:8001/mall-service/;
proxy_set_header Host $host;
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;
}
location /netty-service/ws/ {
proxy_pass http://192.168.216.20:8001/netty-service/ws/;
# 必须的 WebSocket 头设置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
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;
}
# 转发 /payment-service 下的请求
location /payment-service/ {
proxy_pass http://192.168.216.20:8001/payment-service/;
proxy_set_header Host $host;
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;
}
}
webchat-front-admin.conf
server {
listen 5002;
server_name _;
root /usr/share/nginx/html/webchat-front-admin;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
webchat-front-client.conf
server {
listen 5001;
server_name _;
root /usr/share/nginx/html/webchat-front-client;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
webchat-front-mall.conf
server {
listen 5003;
server_name _;
root /usr/share/nginx/html/webchat-front-mall;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
webchat-front-oauth.conf
server {
listen 5000;
server_name _;
root /usr/share/nginx/html/webchat-front-oauth;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
webchat-front-payment.conf
server {
listen 5004;
server_name _;
root /usr/share/nginx/html/webchat-front-payment;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
nginx容器启动启动命令
docker run -d --name nginx-prod \
-p 80:80 \
-p 5000:5000 \
-p 5004:5004 \
-p 5002:5002 \
-p 5003:5003 \
-p 5001:5001 \
-p 5100:5100 \
-p 7100:7100 \
-p 443:443 \
-v /opt/mountdata/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /opt/mountdata/nginx/mime.types:/etc/nginx/mime.types:ro \
-v /opt/mountdata/nginx/conf.d:/etc/nginx/conf.d:ro \
-v /opt/mountdata/nginx/certs:/etc/nginx/certs:ro \
-v /opt/mountdata/nginx/html:/usr/share/nginx/html:ro \
-v /opt/mountdata/nginx/logs:/var/log/nginx \
nginx:1.22.0