Docker 컨테이너에서 Pleasanter PostgreSQL 호환 버전 실행

8350 단어 DockerPleasanter

입문


기대했던 Pleasanter Postgre SQL 대응 버전이 출시되었습니다!
Linux에서 확장된 경우NetCore 버전은 이전에 공개되었지만 SQL Server를 사용하고 싶지 않습니다. 저도 그렇게 생각합니다.
DB에서 PostgreSQL을 사용하면 여러 가지 제한이나 비용이 적용됩니다.
여기에 약간의 시간을 더해서 Pleasanter가 Docker 컨테이너 환경에서 운행하도록 하고 싶습니다.

docker 설치


나는 너를 베어 사랑한다.다른 사이트 등을 참조하여 설치하십시오.

PostgreSQL 컨테이너

  • 다음을 사용하여 Dockerfile을 만듭니다.
  • Dockerfile
    FROM postgres:12.2
    RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
    ENV LANG ja_JP.utf8`
    
  • 구축.
  • $ docker build -t mypostgres:12.2 .
    
    PostgreSQL에 docker 이미지를 생성했는지 확인할 수 있습니다.
    $ docker image ls
    
    REPOSITORY   TAG    IMAGE ID       CREATED          SIZE
    mypostgres   12.2   1fe9d8a7f265   17 seconds ago   318MB
    
  • 네트워크를 생성합니다.
  • $ docker network create -d bridge mynetwork
    
    네트워크가 생성되었습니다.
    $ docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    ab78a3703a75        bridge              bridge              local
    54459fa57282        host                host                local
    e975faae9194        mynetwork           bridge              local
    cda8e2c61db1        none                null                local
    
  • PostgreSQL 컨테이너를 시작합니다.
  • $ docker run -d --name mypostgres12 -e POSTGRES_PASSWORD=password --net="mynetwork" mypostgres:12.2
    
    PostgresSQL 컨테이너가 시작되었는지 확인합니다.
    $ docker ps
    CONTAINER ID  IMAGE            COMMAND                 CREATED         STATUS         PORTS     NAMES
    5ebba7a31bed  mypostgres:12.2  "docker-entrypoint.s…"  17 seconds ago  Up 15 seconds  5432/tcp  mypostgres12
    
  • PostgreSQL 컨테이너에 부착됩니다.
  • $ docker exec -it mypostgres12 bash
    
  • 데이터베이스를 만듭니다.
  • # su - postgres
    $ psql
    postgres=# create database "Implem.Pleasanter";
    postgres=# \l
                                         List of databases
           Name        |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
    -------------------+----------+----------+------------+------------+-----------------------
     Implem.Pleasanter | postgres | UTF8     | ja_JP.utf8 | ja_JP.utf8 |
    
    이로써 DB 컨테이너(PostgreSQL)의 준비 작업이 완료되었습니다.

    Pleasanter 용기

  • 우선 시스템d를 사용하는centos7 이미지를 준비합니다.
  • 이미지 생성 단계를 생략합니다.docker hub.
  • 생성된 이미지에 따라 컨테이너를 시작합니다.
  • $ docker run --privileged -d --name pleasanter --net="mynetwork" -p 8080:80 pleasanter-centos7 /sbin/init
    
    컨테이너가 시작되었는지 확인합니다.
    $ docker ps
    CONTAINER ID  IMAGE               COMMAND       CREATED         STATUS        PORTS                 NAMES
    7f272229599c  pleasanter-centos7  "/sbin/init"  10 seconds ago  Up 9 seconds  0.0.0.0:8080->80/tcp  pleasanter
    
  • 용기에 부착.
  • $ docker exec -it pleasanter bash
    
  • Git client、.NetCore3.1, GDI+를 설치합니다.
  • # yum -y install git
    
    # rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
    # yum -y update
    # yum -y install dotnet-sdk-3.1
    
    # yum -y install epel-release
    # yum -y install libgdiplus
    
  • Pleasanter 어플리케이션을 다운로드하여 배포합니다.
  • 사이트 제목에서 zip을 다운로드하여 적당한 디렉터리로 확장합니다.
    본 사이트의 예에서 "/web"디렉터리 아래에 "pleasanter"디렉터리를 설정했습니다.
    /web/pleasanter/
  • 파일을 편집하고 DB 구성을 설정합니다.
  • /web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json
    {
        "Dbms": "PostgreSQL",
        "Provider": "Local",
        "TimeZoneInfo": "Asia/Tokyo",
        "SaConnectionString": "Server=mypostgres12;Database=postgres;UID=postgres;PWD=password",
        "OwnerConnectionString": "Server=mypostgres12;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD",
        "UserConnectionString": "Server=mypostgres12;Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD",
        "SqlCommandTimeOut": 600,
        "MinimumTime": 3,
        "DeadlockRetryCount": 4,
        "DeadlockRetryInterval": 1000
    }
    
  • CodeDefiner를 실행합니다.
  • # cd /web/pleasanter/Implem.CodeDefiner
    # dotnet Implem.CodeDefiner.NetCore.dll _rds
    
  • 서비스 스크립트를 만듭니다.
  • /etc/systemd/system/pleasanter.service
    [Unit]
    Description = Pleasanter
    Documentation =
    Wants=network.target
    After=network.target
    
    [Service]
    ExecStart = /usr/bin/dotnet Implem.Pleasanter.NetCore.dll
    WorkingDirectory = /web/pleasanter/Implem.Pleasanter
    Restart = always
    RestartSec = 10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-pleasanter
    User = root
    Group = root
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy = multi-user.target
    
  • 서비스 등록 및 시작
  • # systemctl daemon-reload
    # systemctl enable pleasanter
    # systemctl start pleasanter
    
  • NginX의 저장소를 등록합니다.
  • /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    
  • NginX를 설치합니다.
  • # yum -y install nginx
    
  • NginX 서비스를 등록합니다.
  • # systemctl enable nginx
    
  • NginX를 사용하여 리버스 프록시를 설정합니다.
  • /etc/nginx/conf.d/pleasanter.conf
    server {
        listen  80;    
        server_name   192.168.0.200;
        location / {
           proxy_pass         http://localhost:5000;
           proxy_http_version 1.1;
           proxy_set_header   Upgrade $http_upgrade;
           proxy_set_header   Connection keep-alive;
           proxy_set_header   Host $host;
           proxy_cache_bypass $http_upgrade;      
           proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header   X-Forwarded-Proto $scheme;
        }
    }
    
     ※server_name 행에는 실제 액세스 시 IP 주소 또는 호스트 이름이 포함됩니다.
  • NginX를 다시 시작합니다.
  • # systemctl restart nginx
    

    사용 시작


    웹 브라우저를 통해 접근(192.168.0.200:8080/users/login)한 후 로그인 화면을 표시합니다.

    ID:Administrator
    PW:pleasanter
    ※ 첫 로그인 시 PW 변경이 요구되므로 원하는 PW를 설정하십시오.

    끝내다


    이번에는 공식 사이트의 절차를 토대로 플레젠터를 도커 용기에 배치해 응용 프로그램과 DB를 각각 다른 용기로 만들었다.
    상기 예에서 실시하지 않았지만 실제 사용 상황에서 DB와 응용 프로그램 데이터의 영구화 등도 연구해야 한다.

    좋은 웹페이지 즐겨찾기