跳转至

Docker 安装

温馨提示

此版本需要 Docker Engine 支持,请确保 Docker 相关服务正常。
此外,还需要 Docker Compose 支持(v1.29),请确保 docker-compose 相关服务正常。
命令行终端运行 docker --versiondocker-compose --version 检查上述配置。

Docker Compose 脚本

项目根目录下 docker 目录中,包含 Docker 一键启动相关的配置脚本,

$ cd docker
$ ./one_step_start.sh

上述脚本将会:

  1. 拉取 baratsemet/ohurlshortener-admin ohUrlShortener 短链接系统管理端镜像
  2. 拉取 baratsemet/ohurlshortener-portal ohUrlShortener 短链接系统转向门户镜像
  3. 通过 docker/pull_build.yml 其他描述内容构建 redispostgresql 镜像及服务,并对其运行状态做判断,等待缓存和数据库服务正常之后,再启动其他必要服务 (本地构建镜像请查阅 local_build.yml)
  4. 构建名为 network_ohurlshortener 的虚拟网络供上述服务使用
  5. 开启本机 90919092 端口分别应对 ohUrlShortener-PortalohUrlShortener-Admin 应用

其环境变量如下(亦可参照 docker/vars.env 文件):

# Environment Variables for docker-compose

# ohUrlShortenerAdmin
OH_ADMIN_PORT=9092
OH_ADMIN_VERSION=2.0
OH_ADMIN_CONTAINER_NAME=ohurlshortener_admin

# ohUrlShortenerPortal
OH_PORTAL_PORT=9091
OH_PORTAL_VERSION=2.0
OH_PORTAL_CONTAINER_NAME=ohurlshortener_portal

# Postgresql Vars
PG_VERSION=9.6
PG_CONTAINER_NAME=ohurlshortener_pg
PG_SUPER_USER=postgres
PG_SUPER_PWD=0DePm!oG_12Cz^kd_m
PG_LOCAL_PORT=55432

#Redis Vars
RD_VERSION=6.2.6
RD_CONTAINER_NAME=ohurlshortener_redis
RD_LOCAL_PORT=56379

完整 compose 内容如下:

version: '3'
services:

  ohurlshortener-admin:
    image: baratsemet/ohurlshortener-admin:${OH_ADMIN_VERSION}
    container_name: ${OH_ADMIN_CONTAINER_NAME} 
    hostname: oh_admin
    volumes:
      - ../docker/docker_config.ini:/app/config.ini 
    depends_on:
      postgres:
        condition: service_healthy
      redis: 
        condition: service_healthy
    ports:
      - ${OH_ADMIN_PORT}:9092
    networks:
      - ohurlshortener      

  ohurlshortener-portal:
    image: baratsemet/ohurlshortener-portal:${OH_PORTAL_VERSION}
    container_name: ${OH_PORTAL_CONTAINER_NAME} 
    hostname: oh_portal
    volumes:
      - ../docker/docker_config.ini:/app/config.ini      
    depends_on:
      postgres:
        condition: service_healthy
      redis: 
        condition: service_healthy
    ports:
      - ${OH_PORTAL_PORT}:9091
    networks:
      - ohurlshortener       

  postgres:
    image: postgres:${PG_VERSION}
    container_name: ${PG_CONTAINER_NAME}
    hostname: postgres
    environment:
      - POSTGRES_USER=${PG_SUPER_USER}
      - POSTGRES_PASSWORD=${PG_SUPER_PWD}
      - TZ=PRC
      - PGTZ=PRC   
    volumes:
      - ../structure.sql:/docker-entrypoint-initdb.d/001.sql
      - ../docker/container-data/postgresql:/var/lib/postgresql/data      
    healthcheck:
      test: [ "CMD", "psql", "-U","${PG_SUPER_USER}","-d","oh_url_shortener" ]
      timeout: 10s
      interval: 3s
      retries: 10     
    networks:
      - ohurlshortener      

  redis:
    image: redis:${RD_VERSION}
    container_name: ${RD_CONTAINER_NAME}
    hostname: redis        
    healthcheck:
      test: [ "CMD", "redis-cli","-p","6379"]
      timeout: 10s
      interval: 3s
      retries: 10
    networks:
      - ohurlshortener 

networks:
  ohurlshortener:
    driver: bridge
    name: "network_ohurlshortener"
    driver_opts:
      com.docker.network.enable_ipv6: "true"

Docker 参数映射关系

-v {path_to_config_file}:/app/config.ini 配置文件
-p {local_port}:9091 启动端口