Docker Compose를 사용하여 MariaDB 서비스를 배포한 후 서비스를 실행하려면
10691 단어 mysqldockercomposedockermariadb
depends_on
의 docker-compose.yml
키는 MariaDB 서비스를 시작한 후 Node.js 서비스를 시작하는 것과 같이 각 서비스 실행을 시작하는 순서를 설정할 수 있습니다. 그러나 아래 그림의 NG 사례와 같이 종속 서비스를 배포한 후 서비스 실행 순서를 제어할 수 없습니다. 예를 들어 MariaDB(MySQL과 유사한 데이터베이스)를 사용하는 경우 Docker는 depends_on
키만 설정하면 테이블 만들기와 같은 MariaDB 초기화가 완료될 때까지 기다리지 않고 모든 서비스를 실행한다는 의미입니다.이 문서에서는 Docker Compose를 사용하여 종속 서비스를 배포한 후 서비스를 실행하는 예제로 MariaDB 서비스를 배포한 후 Node.js 서비스를 실행하는 방법을 보여줍니다.
다음 그림은
depends_on
키만 사용하는 것과 이 문서의 방법 사이의 실행 중인 서비스 순서를 비교한 것입니다.소스 코드
본 샘플 소스코드는 snowcait에서 the Discussion of this original article (written in Japanese)이 알려준 소스코드를 기반으로 제작되었습니다. 이 아이디어를 주신 snowcait에게 감사드립니다.
Node를 실행하기 전에 /docker-entrypoint-initdb.d
에서 스크립트를 실행하기 위해 Docker가 완료될 때까지 기다려야 하는 경우 healthcheck
키의 테스트 명령에 /docker-entrypoint-initdb.d
에서 초기화된 사용자 이름과 암호를 입력해야 합니다. js. 다른 사용자를 만들지 않고 일부 테이블만 만들면 /docker-entrypoint-initdb.d
스크립트에서 만든 새 테이블에 액세스하는 코드를 만드는 것이 좋습니다.
.github/workflows/test.yml
name: Actions Test
on:
push:
branches:
- dev-*
jobs:
sandbag_test:
runs-on: ubuntu-20.04
timeout-minutes: 5
env:
MARIADB_ROOT_PASSWORD: ${{secrets.MARIADB_ROOT_PASSWORD}}
MARIADB_DATABASE: ${{secrets.MARIADB_DATABASE}}
MARIADB_WEB_USER: ${{secrets.MARIADB_WEB_USER}}
MARIADB_WEB_PASSWORD: ${{secrets.MARIADB_WEB_PASSWORD}}
MARIADB_API_USER: ${{secrets.MARIADB_API_USER}}
MARIADB_API_PASSWORD: ${{secrets.MARIADB_API_PASSWORD}}
MARIADB_PORT: ${{secrets.MARIADB_PORT}}
DB_HOST: ${{secrets.DB_HOST}}
WEB_PORT: ${{secrets.WEB_PORT}}
steps:
- uses: actions/checkout@v2
- name: Shutdown MariaDB
run: sudo service mysql stop
- name: Run docker-compose
shell: bash
run: |
touch .env
docker-compose -v
docker-compose up --build --abort-on-container-exit
working-directory: ./
docker-compose.yml
version: '3'
services:
mariadb:
image: mariadb:10.7
container_name: sandbag_mariadb
environment:
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- MARIADB_DATABASE=${MARIADB_DATABASE}
- MARIADB_USER=${MARIADB_WEB_USER}
- MARIADB_PASSWORD=${MARIADB_WEB_PASSWORD}
- MARIADB_API_USER=${MARIADB_API_USER}
- MARIADB_API_PASSWORD=${MARIADB_API_PASSWORD}
- MARIADB_HOST=%
tty: true
volumes:
- ./sql:/docker-entrypoint-initdb.d
networks:
- datastream
healthcheck:
test: ["CMD", "mariadb", "-u${MARIADB_API_USER}", "-p${MARIADB_API_PASSWORD}", "-e", "use ${MARIADB_DATABASE}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 5s
web:
env_file:
- .env
build:
context: ./web/.
dockerfile: "Dockerfile"
ports:
- ${WEB_PORT}:${WEB_PORT}
depends_on:
mariadb:
condition: service_healthy
command: ["npm", "test"]
volumes:
- ./volume/log/web:/usr/src/logger/web
networks:
- datastream
networks:
datastream:
소스 코드의 실행 결과
이 소스 코드의 실행 결과는 다음 URL에서 확인할 수 있습니다.
https://github.com/KASHIHARAAkira/actions-playground/runs/6634973345?check_suite_focus=true
승인
이전에 언급했듯이 snowcait은 the Discussion of this original article (written in Japanese)에서 이 소스 코드의 대부분을 제공했습니다. 이 아이디어를 주신 snowcait에게 감사드립니다.
이 원본 기사는 내가 쓴 다음과 같습니다. 이것은 이 원본 기사의 일부를 일본어에서 영어로 번역한 것입니다.
docker compose로MariaDB의 이동을 待chiNode.js를 이동하는
zenn.dev
Reference
이 문제에 관하여(Docker Compose를 사용하여 MariaDB 서비스를 배포한 후 서비스를 실행하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/akirakashihara/to-run-services-after-deploying-the-mariadb-service-using-docker-compose-57c5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
name: Actions Test
on:
push:
branches:
- dev-*
jobs:
sandbag_test:
runs-on: ubuntu-20.04
timeout-minutes: 5
env:
MARIADB_ROOT_PASSWORD: ${{secrets.MARIADB_ROOT_PASSWORD}}
MARIADB_DATABASE: ${{secrets.MARIADB_DATABASE}}
MARIADB_WEB_USER: ${{secrets.MARIADB_WEB_USER}}
MARIADB_WEB_PASSWORD: ${{secrets.MARIADB_WEB_PASSWORD}}
MARIADB_API_USER: ${{secrets.MARIADB_API_USER}}
MARIADB_API_PASSWORD: ${{secrets.MARIADB_API_PASSWORD}}
MARIADB_PORT: ${{secrets.MARIADB_PORT}}
DB_HOST: ${{secrets.DB_HOST}}
WEB_PORT: ${{secrets.WEB_PORT}}
steps:
- uses: actions/checkout@v2
- name: Shutdown MariaDB
run: sudo service mysql stop
- name: Run docker-compose
shell: bash
run: |
touch .env
docker-compose -v
docker-compose up --build --abort-on-container-exit
working-directory: ./
version: '3'
services:
mariadb:
image: mariadb:10.7
container_name: sandbag_mariadb
environment:
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- MARIADB_DATABASE=${MARIADB_DATABASE}
- MARIADB_USER=${MARIADB_WEB_USER}
- MARIADB_PASSWORD=${MARIADB_WEB_PASSWORD}
- MARIADB_API_USER=${MARIADB_API_USER}
- MARIADB_API_PASSWORD=${MARIADB_API_PASSWORD}
- MARIADB_HOST=%
tty: true
volumes:
- ./sql:/docker-entrypoint-initdb.d
networks:
- datastream
healthcheck:
test: ["CMD", "mariadb", "-u${MARIADB_API_USER}", "-p${MARIADB_API_PASSWORD}", "-e", "use ${MARIADB_DATABASE}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 5s
web:
env_file:
- .env
build:
context: ./web/.
dockerfile: "Dockerfile"
ports:
- ${WEB_PORT}:${WEB_PORT}
depends_on:
mariadb:
condition: service_healthy
command: ["npm", "test"]
volumes:
- ./volume/log/web:/usr/src/logger/web
networks:
- datastream
networks:
datastream:
이 소스 코드의 실행 결과는 다음 URL에서 확인할 수 있습니다.
https://github.com/KASHIHARAAkira/actions-playground/runs/6634973345?check_suite_focus=true
승인
이전에 언급했듯이 snowcait은 the Discussion of this original article (written in Japanese)에서 이 소스 코드의 대부분을 제공했습니다. 이 아이디어를 주신 snowcait에게 감사드립니다.
이 원본 기사는 내가 쓴 다음과 같습니다. 이것은 이 원본 기사의 일부를 일본어에서 영어로 번역한 것입니다.
docker compose로MariaDB의 이동을 待chiNode.js를 이동하는
zenn.dev
Reference
이 문제에 관하여(Docker Compose를 사용하여 MariaDB 서비스를 배포한 후 서비스를 실행하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/akirakashihara/to-run-services-after-deploying-the-mariadb-service-using-docker-compose-57c5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Docker Compose를 사용하여 MariaDB 서비스를 배포한 후 서비스를 실행하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akirakashihara/to-run-services-after-deploying-the-mariadb-service-using-docker-compose-57c5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)