docker部署geoserver
如果镜像和之前的同名 rep:tag 会覆盖之前的,导致之前的镜像没有rep:tag强制停止docker ps。
·
docker 基本指令
- build
docker build -t rep_name:tag .
// 注意后面的路径 .
如果镜像和之前的同名 rep:tag 会覆盖之前的,导致之前的镜像没有rep:tag
- run
docker run -d --name container_name -p 8080:8080 --restart=always rep_name:tag
- 启动容器
docker start container_id
docker restart container_id
- 停止容器
docker stop container_name
强制停止
docker kill container_name
- 进出容器
docker exec -it container_name /bin/bash
退出:Ctrl+d ,容器内Ctrl+C
- 查看镜像
docker images
- 删除镜像
docker rmi image_id
- 查看容器
docker ps
- 删除容器
docker rm container_id
- 导出镜像
docker save -o 指定地址和文件名 image_rep/tag
- 加载一个可用镜像
docker load -i 包名.tar
- docker-compose
// 创建容器,并后台启动
docker-compose up -d
设置Dockerfile
FROM openjdk:8
#
ENV PREFIX=/geoserver-deploy
ENV PACKAGE_NAME=geoserver-2.18.0
ENV CUSTOM_FONT_DIR=/usr/share/fonts/custom/
ENV HOST_CACHE_DIR_NAME=./docker-data
# COPY ${HOST_CACHE_DIR_NAME}/GILLUBCD.TTF ${CUSTOM_FONT_DIR}
# RUN apt-get update && apt-get install -y fontconfig
# RUN fc-cache -f -v ${CUSTOM_FONT_DIR}
# 设置当前容器指定目录, 如果没有,容器根目录下会自动创建此文件夹, `cd /`切换到根目录
WORKDIR ${PREFIX}
ADD ${PACKAGE_NAME}.zip ./
RUN unzip ./${PACKAGE_NAME}.zip
WORKDIR ./${PACKAGE_NAME}/bin
RUN chmod +x startup.sh
CMD ./startup.sh
docker指令执行两种方式
方式1:脚本文件
windows上面bat文件双击运行:
@echo off
:: 变量
set REPOSITORY_NAME=geoservertest
set TAG_NAME=1.0.0
set CONTAINER_NAME=geoservercontainer
set HOST_PORT=3000
set CONTAINER_PORT=8080
set CONTAINER_DIR_PREFIX=/geoserver-deploy
set PACKAGE_NAME=geoserver-2.18.0
:: 主机文件挂载目录
set HOST_CACHE_DIR_NAME=C:\docker-data
@echo on
@echo start to build...
:: 打包 -t表示tag
docker build -t %REPOSITORY_NAME%:%TAG_NAME% .
pause
@echo start to run..
:: 停止容器
docker stop %CONTAINER_NAME%
:: 移除容器
docker rm %CONTAINER_NAME%
:: 运行容器 -d表示后台运行 -v设置挂载
docker run -d --name %CONTAINER_NAME% -p %HOST_PORT%:%CONTAINER_PORT% -v %HOST_CACHE_DIR_NAME%/start.ini:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/start.ini -v %HOST_CACHE_DIR_NAME%/web.xml:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/webapps/geoserver/WEB-INF/web.xml -v %HOST_CACHE_DIR_NAME%/data_dir:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/data_dir --restart=always %REPOSITORY_NAME%:%TAG_NAME%
pause
:: @echo show logs...
:: @echo
:: docker logs -f %CONTAINER_NAME%
:: pause
:: @echo enter container....
:: @echo
:: docker exec -it %CONTAINER_NAME% sh
:: pause
方式2: 配置文件
- .env文件–定义一些docker-compose.yml中使用的变量
REPOSITORY_NAME=geoservertest
TAG_NAME=1.0.0
CONTAINER_NAME=geoservercontainer
HOST_PORT=3000
CONTAINER_PORT=8080
CONTAINER_DIR_PREFIX=/geoserver-deploy
PACKAGE_NAME=geoserver-2.18.0
HOST_CACHE_DIR_NAME=C:\docker-data
- 定义docker-compose.yml文件
version: "3.0"
services:
geoserverdemo: #项目id
build: #启动服务时,先将build中指定的dockerfile打包成镜像
context: . #指定上下文目录dockerfile所在目录
dockerfile: Dockerfile #Dockerfile文件名称
image: $REPOSITORY_NAME:$TAG_NAME
container_name: $CONTAINER_NAME
restart: always
ports:
- $HOST_PORT:$CONTAINER_PORT
volumes: # 设置挂载
- $HOST_CACHE_DIR_NAME/start.ini:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/start.ini
- $HOST_CACHE_DIR_NAME/web.xml:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/webapps/geoserver/WEB-INF/web.xml
- $HOST_CACHE_DIR_NAME/data_dir:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/data_dir
- 执行
// 启动
docker-compose up -d
// 停止
docker-compose stop
文件目录一览

更多推荐
所有评论(0)