У меня есть экземпляр EC2 linux2, содержащий dokcer compose. Я хочу, чтобы экземпляр запускал службу Docker, переходил в нужную папку, а затем запускал docker-compose up -d, три простые строки при каждом запуске экземпляра:
sudo service docker start
cd APP
docker-compose up -d
Как показано здесь, ввод этого в данные пользователя, когда экземпляр остановлен, должен работать:
#!/bin/bash
sudo service docker start
cd APP
docker-compose up -d
Но это ничего не делает. В документе aws также есть этот скрипт:
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World" >> /tmp/testfile.txt <<<<<<<<------- ACTUAL USER SCRIPT
--//
Когда я вставляю свои три строки вместо строки hello world, работает только первая, запускающая службу докеров.
Я новичок в Linux, поэтому, вероятно, мне не хватает чего-то небольшого.
Спасибо
РЕДАКТИРОВАТЬ Спасибо, ребята, за вашу помощь, проблема действительно в пути к каталогу APP.
/var/log/cloud-init-output. log
. Это будет содержать ошибки, выведенные в ваших пользовательских данных - person Chris Williams   schedule 29.07.2020root
, а не какec2-user
, поэтому пути оболочки и домашние каталоги будут другими. Из-за этого вам действительно следует использовать абсолютные пути в сценариях пользовательских данных. Например,cd APP
может бытьcd /home/ec2-user/APP
? - person Mark B   schedule 29.07.2020