どうも、こんにちは。としと申します。
いかがお過ごしでしょうか。
真夏のピークが去りましたね。
若者の全てが染みるこの頃です。(下書き期間が長すぎて、ちょっと今じゃない感は無視してください(´Д`;))
さて、今までElastic Beanstalk の記事を数本書かせていただきました。
その後、ローカルでDockerを動かすことが出てきたので、Dockerの設定と、どうせローカルで使うならまずはElasticBeanstalk on Docker を使ってみようじゃないか!
と思い、色々調べながらやってみております。
(以下、Docker Desktop がインストールされている前提です。)
まずはDockerfile...
# ベースイメージを指定 FROM node:latest # 作業ディレクトリ作成して設定します WORKDIR /usr/share/nginx/html/ # 必要な環境変数をここに記載します ENV JWT_SECRET="" ENV JWT_EXPIRATION="" ENV MYSQL_DATABASE="" ENV MYSQL_READ_HOST="" ENV MYSQL_READ_PASSWORD="" ENV MYSQL_READ_PORT="" ENV MYSQL_READ_USERNAME="" # package.jsonをこぴります COPY package*.json ./ RUN npm i # アプリケーションのソースをバンドルします COPY . . # PORT EXPOSE 8081 CMD ["node", "dst/server.js"]
とりあえずこれで
docker build -t userName/api .
↑build
docker run --name api -p 8081:8081 -d userName/api
↑これで起動
で動いてくれました。
docker ps
↑これで動いている一覧がみれます。
docker ps -a
↑ -a をつけると停止しているものもみえます。
docker stop api
↑一回止めましょう。
続いて docker-compose を使っていきます。 先ほどのDockerfileはアプリケーションのDockerfileなので、ファイル名をDockerfile-appに変更します。
新しくDockerfile-web を作ります。
# ベースイメージを指定 FROM nginx:latest # default.conf 書き換え COPY ./default.conf /etc/nginx/conf.d/default.conf EXPOSE 80
default.conf
server { listen 80; server_name localhost; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://api:8081/; } }
続いて docker-compose.yml を作ります。
version: '3' services: web: build: context: docker # Dockerfile保存場所 dockerfile: Dockerfile-web # Dockerfileファイル名 image: nginx # docker image name container_name: nginx # docker container name expose: - 80 ports: - 80:80 app: build: context: ./ # Dockerfile保存場所 dockerfile: Dockerfile-app # Dockerfileファイル名 image: api # イメージ名 container_name: api # コンテナ名 expose: - 8081 ports: # ポート接続 - 8081:8081 volumes: # mount workdir - .:/usr/share/nginx/html/ command: ["node", "dst/server.js"]
今回のフォルダ構成
PJ/Dockerfile-app
PJ/docker-compose.yml
PJ/docker/Dockerfile-web
PJ/docker/default.conf
その後
docker-compose up --build
↑を実行すると動いてくれます。
このような感じになれば成功です!
調べながらなので、中々時間がかかりました...
次回はAWS ECR にDocker imageをあげてみるとこら編を記載しようかなと思います。