簡體   English   中英

在 docker 入口點復制文件夾 sh 腳本產生錯誤的文件夾名稱

[英]Copy folder in docker entrypoint sh script produces wrong folder name

我有一個基於 docker 的小項目,我想復制我的 local.ssh 文件夾,然后修改文件夾權限。

  1. 在 docker-compose.yml 中,我將 my.ssh 文件夾掛載到容器的 tmp/.ssh 文件夾中。
  2. 然后在啟動時,我將 tmp/.ssh 的內容復制到 root/.ssh 並更改文件夾權限。 (需要這一步,因為什么時候通過composer安裝我的PHP包,它會抱怨文件夾權限太開放)

不幸的是,my.sh 腳本有問題,因為它在 /root 中創建的文件夾名稱如下所示: '.ssh'$'\r'

docker-compose.yml:

version: '3.7'
services:
  sandbox:
    build:
      context: ./
      dockerfile: ./Dockerfile
    volumes:
      - .:/var/www/html
      - ~/.ssh:/tmp/.ssh
    restart: always
    ports:
      - "8060:80"
    environment:
      - APACHE_RUN_DIR=/var/run/apache2
      - APACHE_RUN_USER=#1000
      - APACHE_RUN_GROUP=#1000
      - APACHE_LOG_DIR=/var/log/apache2
      - APACHE_PID_FILE=/tmp/apache2.pid
      - APACHE_LOCK_DIR=/var/lock/apache2
      - JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Dockerfile:

FROM php:7.4.1-apache-buster

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN a2enmod rewrite

COPY vhost-configs/vhost.local.conf /etc/apache2/sites-available/
COPY vhost-configs/vhost.local.conf /etc/apache2/sites-enabled/
RUN rm /etc/apache2/sites-enabled/000-default.conf

EXPOSE 80

COPY docker-entrypoint.sh /bin/docker-entrypoint.sh
RUN chmod 777 /bin/docker-entrypoint.sh && chmod +x /bin/docker-entrypoint.sh
CMD /usr/sbin/apache2 -DFOREGROUND
ENTRYPOINT ["sh", "/bin/docker-entrypoint.sh"]

docker-入口點.sh:

#!/bin/sh -e
cp -R /tmp/.ssh /root/.ssh
chmod 700 /root/.ssh
chmod 400 /root/.ssh/id_rsa
exec "$@"

docker-entrypoint.sh 文件創建於 windows 並包含 dos 行結尾。

我安裝了 dos2unix 並在容器內轉換了文件:

RUN apt-get install -y dos2unix


RUN dos2unix /bin/docker-entrypoint.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM