그림을 사용하여 연결된 도커 컨테이너 세트 설치 및 실행을 자동화하려고합니다. 구성은 RStudio에서 MySQL 데이터베이스를 쿼리 할 수 있도록 MySQL을 실행하는 컨테이너에 연결된 RStudio를 실행하는 컨테이너로 구성됩니다.무화과를 사용하여 고정 데이터베이스를 초기화 할 수 있습니까?
처음 실행하면 기본 MySQL 이미지에서 MySQL 컨테이너를 만들고 사용자 및 데이터베이스로 채우고 싶습니다. 이 같은 명령 줄 무언가에서 : 나는 미리로드 된 데이터와 데이터베이스 이미지를 잡아 수 있다면
#Get the latest database file
wget -P /tmp http://ergast.com/downloads/f1db.sql.gz && gunzip -f /tmp/f1db.sql.gz
#Create the database container with user, password and database
docker run --name ergastdb -e MYSQL_USER=ergast -e MYSQL_ROOT_PASSWORD=mrd -e MYSQL_DATABASE=f1db -d mysql
#Populate the database
docker run -it --link=ergastdb:mysql -v /tmp:/tmp/import --rm mysql sh -c 'exec mysql -h$MYSQL_PORT_3306_TCP_ADDR -P$MYSQL_PORT_3306_TCP_PORT -uergast -pmrd f1db < /tmp/import/f1db.sql'
#Fire up RStudio and link to the MySQL db
docker run --name f1djd -p 8788:8787 --link ergastdb:db -d rocker/hadleyverse
, 나는 다음과 같은 fig.yml 스크립트 같은 것을 요소를 연결할 수 있다고 생각?
gdrive:
command: echo created
image: busybox
volumes:
- "~/Google Drive/shareddata:/gdrive"
dbdata:
image: mysql_preloaded
environment:
MYSQL_USER=ergast
MYSQL_ROOT_PASSWORD=mrd
MYSQL_DATABASE=f1db
rstudio:
image: rocker/hadleyverse
links:
- dbdata:db
ports:
- "8788:8787"
volumes_from:
- gdrive
내 질문은 내가 아마 초기 fig up
의 한 부분으로, 여기에, 아마도 영구적 볼륨을 마운트의 dbdata
컨테이너를 만듭니다 링크를 원샷 무화과 단계를 사용하여 데이터베이스를 초기화 할 수있다. 그런 다음 컨테이너를 시작하고 중지하면 이전에 설치 한 데이터가 들어있는 데이터 볼륨 컨테이너에 연결하기 만하면 db 초기화 단계를 다시 실행하고 싶지 않습니다.
또한 MySQL 도커 이미지는 임의의 datadir
정의 (Update entrypoints to read DATADIR from the MySQL configuration directly instead of assuming /var/lib/docker)를 지원하는 것처럼 보입니다. 내가 알기에, MySQL 이미지의 현재 정의는 데이터베이스 컨테이너 내에 데이터베이스 컨텐츠를 마운트 (그리고 따라서 유지)하는 것을 방지한다. 이것이 mysql_preloaded
이미지를 만드는 것이 가능할 수도 있지만, MySQL 도커 스크립트의 최신 버전이 dockerhub에 아직 푸시되지 않았다고 생각합니다. 그리고 무화과를 어떻게 사용할 수 있을지 생각할 수 없습니다. 이 대안의 통로를 이용하려면?
그러나 docker-entrypoint.sh를 사용하여 db 컨테이너를 사용자 정의하는 이유는 무엇입니까? Isnt psychemedia의 시도가 db 컨테이너를 고유하지 않게 유지하고 db를 실행시 또는 docker compose/fig better practice로 초기화 했습니까? 또는 '명령 :'이 (가) 'exec mysql ...'과 호환되지 않습니까? – Tom