一般先端項目からdocker容器化


一般先端項目からdocker容器化
会社のプロジェクトはランチャーに配置されたプロジェクトで、現地で実行したいです。
前提:
  • プロジェクトはnodeコンパイルを使っています。現地でコンパイルが必要でない場合は、直接第二ステップ
  • を実行できます。
  • コードはすでに開発済みです。
    ディレクトリ構造
    keith@Keith:~/web/java/docker/cms-frontend$ tree -L 2
    .
    ├── Dockerfile   //    
    ├── README.md
    ├── build
    │   ├── build.js
    │   ├── check-versions.js
    │   ├── config.js
    │   ├── dev-client.js
    │   ├── dev-server.js
    │   ├── env.js
    │   ├── utils.js
    │   ├── vue-loader.conf.js
    │   ├── webpack.base.conf.js
    │   ├── webpack.dev.conf.js
    │   └── webpack.prod.conf.js
    ├── conf
    ├── config
    │   ├── dev.env.js
    │   ├── index.js
    │   └── prod.env.js
    ├── default.conf    //    
    ├── dist   //      
    │   ├── index.html
    │   └── static
    ├── docker-compose.yml  //    
    ├── index.html
    ├── project.yml
    
    ステップ
    ここでdockerのインストール手順は省略します。
    フロントエンドコードをコンパイルする
  • ダウンロードnodeミラー
  • docker pull node
    
  • コンパイルコード
  • 
    cd  /usr/share/src/
    
    docker run -t -i --name mynode -v $PWD:/www  node
    
    
    docker ps 
    
    docker exec -ti `docker ps | grep mynode | awk '{print $1}'` bash
    
    yarn && npm run build
    
    exit
          (          dist   )
    docker ps -a  //    pc    (     )
    docker kill mynode  //    
    docker rm mynode  //    
    
    起動容器
    
    docker build  -f Dockerfile -t registry.***.com/ued/frontend:dev-0.0.2 . // docker-compose   
    
    docker-compose -f docker-compose.yml  up
    
    プロジェクトに追加するファイルが必要です。
    前後の端が完全に分離されているので、ドメインをまたぐ問題を考慮して、直接にnginxを使って逆エージェントを行います。前後が同じサーバにいれば、このような面倒なdefault.com nfは必要ありません。
    server {
        listen       80;
        server_name  -;
        #access_log  /var/log/nginx/host.access.log  main;
        set $gateway "172.22.31.222:8090";
    
        location ~ ^/api {
            resolver 8.8.8.8;
            #        
            if ($host ~ "test") {
                 set $gateway "172.22.**.** ";
            }
    
            if ($host ~ "demo") {
                 set $gateway "172.16.*.* ";
            }
    
            if ($host ~ "online") {
                 set $gateway "";
            }
    
            proxy_http_version 1.1;
            proxy_set_header Connection "keep-alive";
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
            proxy_next_upstream http_502 http_503 http_504 http_500 error timeout invalid_header;
            proxy_pass http://${gateway};
        }
    
        location / {
            alias   /usr/share/nginx/html/dist/;
            index  index.html;
            try_files $uri $uri/ /index.html;
        }
    }
    
    docker-componese.yml
    version: '2'
    services:
      frontend:
        mem_limit: 1073741824
        image: registry.***.com/ued/frontend:dev-0.0.2 //       
        environment:
          DEBUG_MODE: '1'  //          ,      env     
        ports: 
        - 8124:80/tcp  //     ,   8124     80  
    
    Docerfile
    FROM nginx
    ADD ./ /usr/share/nginx/html
    ADD default.conf /etc/nginx/conf.d/default.conf
    
    普通Java-mavenプロジェクトdockerの容器化
    前提:
  • プロジェクトは、mavenを使って
  • を包装します。
  • は、jar命令で直接に実行することができます。