Как добавить несколько строк в файл в Dockerfile? - PullRequest
1 голос
/ 29 апреля 2019

У меня есть dockerfile, и я не могу встроить в него файл конфигурации nginx, чтобы его можно было добавить в /etc/nginx/nginx.conf.

Я попробовал следующееформаты:

RUN cat <<EOT >> /etc/nginx/nginx.conf
user                            www;
worker_processes                auto; # it will be determinate automatically by the number of core

error_log                       /var/log/nginx/error.log warn;
pid                             /var/run/nginx.pid; # it permit you to use /etc/init.d/nginx reload|restart|stop|start

events {
    worker_connections          1024;
}

http {
    include                     /etc/nginx/mime.types;
    default_type                application/octet-stream;
    sendfile                    on;
    access_log                  /var/log/nginx/access.log;
    keepalive_timeout           3000;
    server {
        listen                  80;
        root                    /usr/local/www;
        index                   index.html index.htm;
        server_name             localhost;
        client_max_body_size    32m;
        error_page              500 502 503 504  /50x.html;
        location = /50x.html {
              root              /var/lib/nginx/html;
        }
    }
}
EOT

и

RUN echo $
'user                            www; \n
worker_processes                auto; # it will be determinate automatically by the number of core \n

error_log                       /var/log/nginx/error.log warn; \n
pid                             /var/run/nginx.pid; # it permit you to use /etc/init.d/nginx reload|restart|stop|start \n

events { \n
    worker_connections          1024; \n
} \n

http { \n
    include                     /etc/nginx/mime.types; \n
    default_type                application/octet-stream; \n
    sendfile                    on; \n
    access_log                  /var/log/nginx/access.log; \n
    keepalive_timeout           3000; \n
    server { \n
        listen                  80; \n
        root                    /usr/local/www; \n
        index                   index.html index.htm; \n
        server_name             localhost; \n
        client_max_body_size    32m; \n
        error_page              500 502 503 504  /50x.html; \n
        location = /50x.html { \n
              root              /var/lib/nginx/html; \n
        } \n
    } \n
}' 
> /etc/nginx/nginx.conf

Однако в любом из двух примеров я получаю следующую ошибку, которая выглядит так, будто docker пытается обработать файл конфигурации nginx как свой собственныйпеременные:

Sending build context to Docker daemon 33.28 kB
Error response from daemon: Unknown instruction: WORKER_PROCESSES

Версия Docker 1.13.1, сборка 07f3374 / 1.13.1, и я использую дистрибутив CentOS Atomic Host 7.1902, а базовый образ докера - alpinelinux.

Спасибо

1 Ответ

3 голосов
/ 29 апреля 2019

Это должно сработать:

RUN echo $'first line \n\
second line \n\
third line' > /etc/nginx/nginx.conf

В основном он обернут в $'' и использует \n\ для новых строк.

...