Dockerを使用してVueを配置します.js+Goプロジェクト

2088 ワード

最近会社はdashboardを作るように要求して、フロントエンドはVueを使います.jsフレームワーク、バックエンドはGo言語で書かれています.Dockerでの導入が決定した際に、多くの問題が発生したことを記録します.
このプロジェクトではAWSのDynamoDBを使用する必要があるため、Dockerのイメージにaws-cliをインストールする必要がありますが、aws-cliはPythonに依存してインストールするしかありません.まずUbuntuベースミラーを実行することから(Centos 7であれば、いろいろなコマンドがありますが、考え方は同じです)、このコンテナに必要なnodejs、Python環境をインストールし、aws-cliをインストールしてawsアカウントの配置を行います.そうすると、awsアカウントを持つミラーができます.具体的な手順は以下の通りです.
#       Ubuntu     
docker run -it ubuntu /bin/bash

#   apt-get,            
apt-get update
apt-get upgrade

#    python
apt-get install python3.6
ln -s /usr/bin/python3.6 /usr/bin/python
apt-get install python3-pip 
ln -s /usr/bin/pip3 /usr/bin/pip

#    aws-cli
pip install awscli --upgrade --user

#    vim
apt-get install vim

#    aws-cli   
vim /root/.bashrc
export PATH=/root/.local/bin:$PATH
source /root/.bashrc
#    aws   
aws configure

#    nodejs
apt-get install nodejs

#     
exit

#                   
docker commit -m"install package"  aws-node:0.0.1

これでawsアカウントを持つミラー「aws-node:0.0.1」が作成されました.次に、このミラーに基づいて、nodejsとGOプログラムを起動するための次のミラーを再構築します.Dockerfileファイルを作成するには、次のようにします.
FROM aws-node:0.0.1

RUN mkdir -p /app

WORKDIR /app

COPY . /app

ENV AWS_table=XXX

RUN chmod +x /app/service.sh
  
EXPOSE 8080     #           

EXPOSE 3000     #     

CMD /app/service.sh

containerで前後のプロセスを前後に開始するため、各DockerfileではCMDコマンドが1つしか許可されていません.そのため、実行する必要があるすべてのコマンドをスクリプトファイル「service.sh」に配置します.次のようにします.
#!/bin/sh

curl -o- -L https://yarnpkg.com/install.sh | bash   #    yarn

$HOME/.yarn/bin/yarn install                        #    vue      

env GIN_MODE=release ./service > service.log &      #        (  go            )

$HOME/.yarn/bin/yarn serve --host 0.0.0.0           #     (       --host 0.0.0.0)

その後は通常のプロセスで、build image(プロジェクトのディレクトリに切り替えます):
docker build -t dashboard:0.0.1 .

containerの再起動:
docker run -d -p 8000:8080 -p 3000:3000 dashboard:0.0.1

その後ブラウザに「http://8000」と入力するとページが表示されます!