在完成MySQL导入后在链接的容器上执行shellscript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在完成MySQL导入后在链接的容器上执行shellscript相关的知识,希望对你有一定的参考价值。
在我的Dockerfile中,我使用这两行在入口文件夹中复制3个mysql转储并执行shellscript:
ADD dumps /docker-entrypoint-initdb.d/
COPY echo.sh /docker-entrypoint-initdb.d/9echo.sh
这很好,但是我正在寻找一种方法来在链接的php容器中调用shellscript
version: '3.5'
services:
db:
build: mysql
environment:
MYSQL_ROOT_PASSWORD: app
MYSQL_USER: app
MYSQL_PASSWORD: app
MYSQL_DATABASE: app
expose:
- 3360
networks:
- traefik_traefik
restart: $RESTART
php73:
build:
context: ./php
args:
feature_tag: $CONTAINER_PREFIX
links:
- db
depends_on:
- db
networks:
- traefik_traefik
labels:
- "traefik.http.routers.$CONTAINER_PREFIX_php73.rule=Host($URLS)"
- "traefik.http.middlewares.thisauth.basicauth.users=swiss:$$apr1$$nb9MT1Rk$$swy9fdsfcz8YFXYdzwBwR1"
- "traefik.http.routers.$CONTAINER_PREFIX_php73.middlewares=thisauth@docker"
因为只有在数据库完全加载了所需数据后才能调用此脚本。否则,PHP代码将无法正常工作。
是否可以在docker-compose或Dockerfile中使用初始化脚本调用之后?
答案
我不确定这是您的意思,但是如果您要调用shell脚本,DB和php启动后,您可以像这样更改docker-compose.yml:
php73:
build:
context: ./php
args:
feature_tag: $CONTAINER_PREFIX
links:
- db
depends_on:
- db
networks:
- traefik_traefik
labels:
- "traefik.http.routers.$CONTAINER_PREFIX_php73.rule=Host($URLS)"
- "traefik.http.middlewares.thisauth.basicauth.users=swiss:$$apr1$$nb9MT1Rk$$swy9fdsfcz8YFXYdzwBwR1"
- "traefik.http.routers.$CONTAINER_PREFIX_php73.middlewares=thisauth@docker"
command: sh -c ' bash script.sh'
以上是关于在完成MySQL导入后在链接的容器上执行shellscript的主要内容,如果未能解决你的问题,请参考以下文章