일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ambiguous function description
- 티스토리챌린지
- ethers v6
- SBT표준
- 스마트컨트렉트프록시
- vue기초
- 머신러닝기초
- git rebase
- ethers websocket
- 스마트 컨트렉트 함수이름 중복
- ethers
- rust 기초
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트컨트렉트 함수이름 중복 호출
- Vue
- multicall
- 러스트기초
- 오블완
- 체인의정석
- 스마트컨트렉트테스트
- 프록시배포구조
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초 학습
- 러스트 기초
- Vue.js
- ethers typescript
- chainlink 설명
- 컨트렉트 배포 자동화
- nest.js설명
- ethers type
Archives
- Today
- Total
체인의정석
docker compose 사용법 정리 본문
728x90
반응형
1. docker-compose.yml 파일을 작성한다.
환경 변수의 경우 여기서 방법이 2가지 있는데 env파일을 따로 만들어 주는 것과 environment를 통해 직접 설정해 주는것이다.
아래 예시에서는 db는 후자, event_sub는 전자에 해당된다.
version: '3.7'
services:
mysql_db:
image: mysql:latest
container_name: database
command: --max-connections=10000
ports:
- "33306:3306" //왼쪽은 내 컴퓨터에서의 포트, 오른쪽은 도커 안에서의 포트
environment:
MYSQL_ROOT_PASSWORD: 비밀번호입력
MYSQL_DATABASE: db이름입력
MYSQL_USER: db유저입력
MYSQL_PASSWORD: db비밀번호 입력
volumes: //voulme이 없으면 db에 만든 테이블 및 데이터가 기록되지 않음
- mysql_data:/var/lib/mysql
- ./event_bot/etc:/docker-entrypoint-initdb.d
event_sub:
build: . //build 파일의 위치
container_name: example_event //컨테이너에서 표시될 이벤트
ports:
- "3002:3000" //왼쪽은 내 컴퓨터에서의 포트, 오른쪽은 도커 안에서의 포트
env_file: "dev.env" // 사용할 env 파일의 이름
volumes:
- ./event_sub:/app //volume의 위치
depends_on:
- mysql_db //위의 db가 있을때만 실행가능하게 의존성 설정
restart: always // 만약 꺼지면 계속해서 재시작 하도록 설정
volumes:
mysql_data:
2. DockerFile을 작성한다. 여기서는 이벤트 구독 봇의 설치 (npm install, 및 실행 커멘드 등을 넣으면 된다.)
# Use an official Node runtime as a parent image
FROM node:16-alpine
# Set the working directory
WORKDIR /usr/src/app
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy the rest of the application
COPY . .
# Set the working directory to event_bot
WORKDIR /usr/src/app/event_sub
# Expose the port the app runs on
EXPOSE 3000
# Define the command to run the app
CMD ["node", "event_sub.js"]
3. 실행
도커의 경우 먼저 빌드를 하고 실행을 시켜야 한다. 아래는 기본적인 명령어 들이다.
#도커 빌드하고 띄우기 따로
docker-compose build
docker-compose up
#도커 띄우고 뒤에서 실행
docker-compose up -d
#도커 빌드 후 띄우고 뒤에서 실행
docker-compose up -d --build
#도커 모두 종료시키기
docker-compose down
#도커 상황 보기
docker-compose ps -a
#로그 보기
docker-compose logs -f -t 컨테이너이름
4. 주의 할점
위에서 포트를 설정할 때. 3002:3000 으로 해두었다면 내 컴퓨터에서는 3002번 포트로 띄워져있지만 도커에서 내부적으로는 3000포트를 쓴다. 이에따라 도커 안의 프로그램끼리 통신을 하는 상황이라면 도커 내부의 포트를 사용해서 접근해야 에러가 나지 않는다.
도커를 사용하다보면 volume이 꼬여서 "Access denied for user ‘root’@’localhost’ (using password:YES)" 에러가 뜨면서
내 환경에서는 작동하던 것이 다른 사람의 컴퓨터에서는 작동하지 않을 수도 있는데 이경우 volume을 삭제하면 해결이 될 수 있다. 삭제하고 싶은 경우에는 다음과 같이 하면 된다.
docker-compose down -v
728x90
반응형
'개발 > docker & linux' 카테고리의 다른 글
Aethir node 업데이트하기 스크립트 (0) | 2024.07.29 |
---|---|
docker-compose 로 db 쉽게 만들고 mysqlworkbench로 접속하기 (1) | 2024.07.09 |
docker compose를 사용한 db 설치 후 기본 작업 (0) | 2024.02.20 |
zsh: command not found: nvm 오류해결, NVM 설치방법 (0) | 2023.10.12 |
운영서버 터미널에서 에러 로그 특정 단어 앞,뒤로 여러 단어 검색하는 법 (zCat, grep -A -B, grep) (0) | 2023.08.11 |
Comments