Docekrとは?2再チャレンジ導入(成功)
7903 ワード
こいつのドックも慣れていないように見える.
前日に過去の種目を拡大しようとして失敗した戦績がある.今回はAWS連動やその他を理由に、進行中のプロジェクトを拡大してみました.ターゲットは、サーバ自体を仮想マシンに入れ、 に戻すことです.Serviceが更新されると、運用環境を変更することなく新しいイメージを作成し、導入できます.
->サービスを一度に使用して環境イメージを操作します.一度使用して捨てる. Docker Composeマルチコンテナアプリケーションを定義および共有するために開発されたツール. Componentは、サービスを定義するYaMLファイルを作成し、すべてまたはすべての終了を単一のコマンドで実行します 設定
サーバー.jarファイルで構築
Dockerfileの作成(上部)
docker-compose.作成yml(Dockerfileと同じ場所)
gaon volumeが使用され、データベースが対応するボリュームに接続されているため、コンテナを削除して再実行してもデータベースデータは失われません.
うんてん
すなわちdocker-composeymlファイル内のすべてのサービスを作成して実行 画像を再構築する場合は、 削除
画像まで削除したいなら.プロジェクトがjarファイルを変更して再構築した場合は、jarファイルをドッキングステーションにコピーする 再構築が必要な場合は、 または
Docker
およびDocker Compose
を使用すると、プロジェクトを一度に配置できます.前日に過去の種目を拡大しようとして失敗した戦績がある.今回はAWS連動やその他を理由に、進行中のプロジェクトを拡大してみました.
->サービスを一度に使用して環境イメージを操作します.一度使用して捨てる.
サーバー.jarファイルで構築
./gradlew build
Dockerfileの作成(上部)
# FROM: 어떤 이미지를 기반으로 할지 설정합니다. Docker 이미지는 기존에 만들어진 이미지를 기반으로 생성합니다.
# FROM <이미지 이름>:<태그> 형식으로 설정합니다.
FROM openjdk:8-jdk-alpine
# build 시점에만 사용되는 변수
ARG JAR_FILE=build/libs/*.jar
# COPY는 파일을 이미지에 추가합니다. ADD와는 달리 COPY는 압축 파일을 추가할 때 압축을 해제하지 않고, 파일 URL도 사용할 수 없습니다.
COPY ${JAR_FILE} app.jar
# ENTRYPOINT는 컨테이너가 시작되었을 때 스크립트 혹은 명령을 실행합니다
# 셀 없이 바로 실행하기 ENTRYPOINT ["<실행 파일>", "<매개 변수1>", "<매개 변수2>"]
ENTRYPOINT [ "java", "-jar", "/app.jar" ]
# Docker compose 버전
version: '3.8'
# 가동할 컨테이너 목록
services:
db:
# 사용할 이미지(Docker Hub 또는 로컬에 저장된 Image)
image: mysql:8.0
container_name: gaon_db
restart: always
# 외부에서 컨테이너 내부로 연결되는 포트 목록
ports:
- 32000:3306
# 컨테이너 내에서 사용되는 환경 변수
environment:
# <사용할 Database root 계정 비밀 번호 설정>
MYSQL_ROOT_PASSWORD: password
TZ: 'Asia/Seoul'
# 실제 드라이브와 컨테이너의 드라이브를 연결(Mount)
volumes:
# 처음에 실행될 sql문을 집어넣는다
- ./db:/docker-entrypoint-initdb.d
# 볼륨에 db 연결 (컨테이너 종료시에도 날아가지 않게)
- 'gaon_volume:/var/lib/mysql'
# 컨테이너 내부에서 사용되는 네트워크
networks:
- backend
# 안해주면 aws에서 mbind: Operation not permitted 에러 뜸
security_opt:
- seccomp:unconfined
app:
# 공개된 Image 가 아닌 Dockerfile 을 통한 빌드 이미지 사용
# 위에서 만든 Dockerfile을 사용한다
build:
context: ./
restart: always
container_name: gaon_app
ports:
- 8080:8080
- 8443:8443
environment:
TZ: Asia/Seoul
# Spring application.properties DB 설정
SPRING_DATASOURCE_URL: 'jdbc:mysql://db:3306/gaon?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true'
server.address: 0.0.0.0
# 의존 컨테이너
depends_on:
- db
networks:
- backend
volumes:
gaon_volume:
networks:
backend:
もちろん、ここではプロジェクトに必要なopenviduやnginxなどを追加しましたが、基本フレームワークは以下の通り!gaon volumeが使用され、データベースが対応するボリュームに接続されているため、コンテナを削除して再実行してもデータベースデータは失われません.
うんてん
docker-compose up -d
上記のコマンドを実行すると、イメージがない場合は、DockerHubから取得したDBイメージと、以前に作成したDockerfileを使用してプロジェクトのイメージが作成されます.作成した画像をコンテナとして実行します.すなわちdocker-composeymlファイル内のすべてのサービスを作成して実行
-d
オプションはバックグラウンドで実行されることを示します.--build
オプションを使用します.docker-compose down
docker-compose.ymlファイル内のすべてのサービスコンテナを一度に停止して削除します.画像まで削除したいなら.
docker-compose down --rmi all
上記のコマンドを使用すればよい.COPY ${JAR_FILE} app.jar
コマンドを実行するために、イメージを再構築する必要があります.down
オプションで現在の画像を削除できます--rmi all
の場合は、up
オプションを使用することもできます.Reference
この問題について(Docekrとは?2再チャレンジ導入(成功)), 我々は、より多くの情報をここで見つけました https://velog.io/@co323co/Docekr-배포...2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol