Permissions docker compose命令执行问题-在/var/www中设置权限/

Permissions docker compose命令执行问题-在/var/www中设置权限/,permissions,docker-compose,Permissions,Docker Compose,我对以下docker compose执行有问题 PRMS_DEV_liam3_server: image: bpmspace/liam3:liam3_master-production_server_master hostname: PRMS_DEV_liam3_server **command: sh -c "/var/www/html/sqldump/import_sql_all.sh && chown -R www-data:www-data /

我对以下docker compose执行有问题

  PRMS_DEV_liam3_server:
    image: bpmspace/liam3:liam3_master-production_server_master
    hostname: PRMS_DEV_liam3_server
    **command: sh -c "/var/www/html/sqldump/import_sql_all.sh && chown -R www-data:www-data /var/www/ && find /var/www/ -type f -exec chmod 660 {} \; && find /var/www/ -type d -exec chmod 770 {} \;"**
    volumes:
    - PRMS_DEV_liam3_server:/var/www/html
    depends_on:
    - PRMS_DEV_liam3_mariadb10
    environment:
    - DB_HOST=PRMS_DEV_liam3_mariadb10
    - DB_PORT=3306
    - DB_NAME=bpmspace
    - DB_USER=bpmspace
    - DB_PASSWORD=12
    - DB_ROOT_PASSWORD=12
   deploy:
     labels:
     - traefik.enable=true
     - traefik.http.routers.PRMS_DEV_liam3_server.rule=Host(`PRMS_DEV_liam3_server.bpmspace.net`)
     - traefik.http.services.PRMS_DEV_liam3_server-service.loadbalancer.server.port=80
   placement:
    constraints: [node.role == manager]
   networks:
    - proxy-net
“命令”未运行 日志文件显示“sh:1:语法错误:&&“意外” 我是否必须逃离我用“\”试过的“\”? 但不幸的是日志文件什么也没说

有什么想法吗? 谢谢你,罗布

-----因为一个问题而添加-----

有2个Dockerfile已开票

第一

FROM php:7.3.5-apache-stretch
RUN docker-php-ext-install pdo_mysql mysqli
RUN docker-php-ext-enable pdo_mysql mysqli
RUN export DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y --no-install-recommends apt-utils
RUN echo "postfix postfix/mailname string placeholder.hostname.com" | debconf-set-selections
RUN echo "postfix postfix/main_mailer_type string 'Satellite system'" | debconf-set-selections
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y postfix
RUN apt-get install -y openssh-client
RUN apt-get install -y mysql-client
RUN apt-get install -y mailutils
RUN apt-get install -y libicu-dev
RUN apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) intl pdo_mysql bcmath mbstring exif gd
RUN a2enmod rewrite
RUN mkfifo /var/spool/postfix/public/pickup
RUN curl -L https://storage.googleapis.com/etcd/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz -o /tmp/etcd-v3.4.3-linux-amd64.tar.gz
RUN mkdir /tmp/etcd-download
RUN tar xzvf /tmp/etcd-v3.4.3-linux-amd64.tar.gz -C /tmp/etcd-download --strip-components=1
RUN rm -f /tmp/etcd-v3.4.3-linux-amd64.tar.gz
RUN cp /tmp/etcd-download/etcdctl /usr/local/bin/
RUN rm -rf /tmp/etcd-download/
RUN etcdctl version
COPY production_server_master.sh /usr/local/bin/production_server_master.sh
创建“bpmspace/docker\u bpmspace\u基地:生产\u服务器\u主机”

您可以通过“docker pull bpmspace/liam3:liam3\u master-production\u server\u master”获得它

第二

创建“bpmspace/docker\u bpmspace\u基地:生产\u服务器\u主机”

您可以通过“docker pull bpmspace/liam3:liam3\u master-production\u server\u master”获得它 以及来自

3个发票为*.sh

1) 生产服务器主机.sh

#!/bin/bash
chown -R www-data:www-data /var/www/
find /var/www/ -type f -exec chmod 660 {} \;
find /var/www/ -type d -exec chmod 770 {} \;
2) liam3-entrypoint.sh

#!/bin/sh
set -e

/usr/local/bin/production_server_master.sh
/usr/local/bin/liam3-import_sql_all.sh

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
        set -- apache2-foreground "$@"
fi

exec "$@"
3) liam3-import_sql_all.sh

#!/bin/bash
for i in {1..50}
    do
    # check if db is up 
    mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME -e "use bpmspace_liam3-v1;"
        if [ $? -eq 0 ]
        then
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_structure.sql
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_statemachine.sql
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_min.sql 
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_diff.sql
          exit 0
        else
            sleep 5
        fi
done
echo "Failure: Could not connect to $DB_HOST $DB_NAME" >&2
exit 1
#/bin/bash
对于{1..50}中的i
做
#检查数据库是否打开
mysql-u root-p$DB\u root\u PASSWORD-h$DB\u HOST$DB\u NAME-e“使用bpmspace\u liam3-v1
如果[$?-等式0]
然后
mysql-u root-p$DB\u root\u密码-h$DB\u主机$DB\u名称&2
出口1
但我得到了 运行容器时,“状态停止数秒,退出代码为0”

不知道为什么-日志文件为空

当我在第二个dockerfile中注释“#ENTRYPOINT[“liam3 ENTRYPOINT.sh”]”时,服务器启动没有问题

当我“bash into container”并执行“/liam3 entrypoint.sh”时,它就像一个符咒一样工作,sql DB和权限集都被导入

服务器(服务)在docker swarm中运行,具有

docker堆栈部署--编写文件docker-compose.yml PRMS-DEV


感谢rob

将命令放入脚本文件xxx.sh,将其添加到您的构建中,然后在命令中调用xxx.shThank-我会尝试一下,但该命令应该在stratup之后执行-因此我必须将其附加到入口点脚本,或者?我会做一些测试…你能提供Dockerfile吗我在问题后添加了一些信息------因为一个问题而添加-----
#!/bin/bash
for i in {1..50}
    do
    # check if db is up 
    mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME -e "use bpmspace_liam3-v1;"
        if [ $? -eq 0 ]
        then
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_structure.sql
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_statemachine.sql
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_min.sql 
            mysql -u root -p$DB_ROOT_PASSWORD -h $DB_HOST $DB_NAME < /var/www/html/sqldump/bpmspace_liam3_v1_diff.sql
          exit 0
        else
            sleep 5
        fi
done
echo "Failure: Could not connect to $DB_HOST $DB_NAME" >&2
exit 1