以前書いた下記、記事の続きでDockerfileとdocker-compose.ymlを作って、動かす手順まで今回記載します。
https://qiita.com/MCYamamoto/items/4d424af9573fa90edf61
最終的なフォルダ構成
まず、最終的なフォルダ構成です。
下記のようになります。
baseフォルダ
+docker-compose.yml
+cont
+env
+Dockerfile
+deploy //デプロイ対象のソースコード(今回はnodejs)
+package.json
+package-lock.json
+build
+jsファイルたち
+share //ホストとコンテナの共有フォルダ
Dockerfileをつくる
[参考URL]
https://qiita.com/pottava/items/452bf80e334bc1fee69a
全体的な流れとしては、上記を参考にした。
インストール必要なものをインストールしながらコマンドをメモして、最終的なDockerfileを作るというもの。
1. Dockerイメージを決める。
ラズパイはARMのため、ARMに対応したイメージとしてDebianにした。
[参考URL]
https://qiita.com/koduki/items/0ed303dac5d32646194f
2. bashのコンテナを起動する。
$ sudo docker run -it -v $(pwd):/tmp/share debian:buster /bin/bash
-it:ターミナルで操作可能に
-v:コンテナとのフォルダ共有
3. 必要なものをインストールする。
動かしたいプログラムによって必要なパッケージをインストールする。
apt-get install パッケージ名
といった感じです。
なお、注意点としては、Dockerfileに書く場合はインストールを止めないため"-y"オプションが必要です。
最終的にはnodeとsqliteしか必要なかったので、コンテナイメージをnodeにしてしまう方が良いのですが、
過程を残すということで、最終的にできたのは下記になります。
やっていることとしては、下記になります。
- deploy対象のコードをコピー
- 必要なものをOSにインストール
- deployフォルダ配下のnodeに必要なパッケージを「npm install」でインストール
#Dockerfile
FROM debian:buster
COPY deploy/ /home/deploy
WORKDIR /home/deploy
RUN apt-get update
RUN apt-get install -y cmake
RUN apt-get install -y libssl-dev
RUN apt install curl
RUN apt-get install -y sqlite3 libsqlite3-dev
RUN apt-get install -y nodejs npm && npm install n -g && n 12.18.4
RUN npm install
docker-compose.ymlをつくる
先ほど作ったDockerfileをコンテナイメージとして、最終的にdeployフォルダ配下のnodeが自動起動するものにしました。
<補足>
version: "3.8"
services:
cont:
build:
context: ./cont/env
dockerfile: Dockerfile
container_name: CONT-1
tty: true
volumes:
- "./cont/env/share:/tmp/share"
- ".:/workspace"
- "./cont/env/deploy/build:/home/deploy/build"
working_dir: /home/deploy/build
command: npm run start
<補足>
package.jsonに下記記載して、buildフォルダ配下のプログラムが動くようにしています。
"scripts": {
"start": "node ./build/main.js",
},
docker-compose起動
作成したフォルダ環境一式を各OS(Windows10、Linux、Raspi)の任意のフォルダに配置して下記実行すると、すべて同じ動きします。
sudo docker-compose up --build
(おまけ)Vscodeでのデバッグ環境作る
[参考URL]
https://tech-lab.sios.jp/archives/21675
https://qiita.com/Yuki_Oshima/items/d3b52c553387685460b0
Visual Studio Code 上でf1メニューまたは左下に現れる緑色のアイコンをクリックして「Remote-Containers: Open Folder in Container...」を選択し、docker-compose.ymlがあるフォルダを選択すると
しばらくするとコンテナが実行され、コンソールでデバッグ操作できます。
vscode、docker便利、、