Ansible Docker: 使用容器执行 shell 文件
Ansible Docker: Execute shell file with container
我有以下 Docker 命令:
docker run -d --name ADMIN_SERVER_TEST1 --network=soa_net --ip=172.16.1.11 -p 7001:7001 -v /Oracle_Volumes/ENVIRONMENTS/TEST1/SOA-Volume/cheetah_domain:/u01/oracle/user_projects --env-file $ENV_HOME/adminserver-test1.env.list --env-file $ENV_HOME/soaserver-test1.env.list -u root redreply/soa-suite:12.2.1.3 ./dockertools/createDomainAndStart.sh && docker logs -f ADMIN_SERVER_TEST1
对于此命令,我使用 Ansible 创建了以下脚本:
- name: Create SOA container
docker_container:
name: "{{ name }}"
image: "{{ image }}"
detach: yes
privileged: yes
user: root
volumes:
- "{{ src_vol }}:{{ dest_vol }}"
ports:
- 7001:7001
networks:
- name: soa_net
ipv4_address: "{{ ip }}"
env_file:
- "{{ env_file_1}}"
- "{{ env_file_2}}"
但我不知道如何将这部分添加到 Ansible 脚本中:
./dockertools/createDomainAndStart.sh && docker logs -f ADMIN_SERVER_TEST1
如果你想运行你的脚本作为容器启动时在容器中执行的command
,你可以使用command
属性指定它,如下所示:
- name: Create SOA container
docker_container:
name: "{{ name }}"
image: "{{ image }}"
detach: yes
privileged: yes
user: root
command: ./dockertools/createDomainAndStart.sh
volumes:
- "{{ src_vol }}:{{ dest_vol }}"
ports:
- 7001:7001
networks:
- name: soa_net
ipv4_address: "{{ ip }}"
env_file:
- "{{ env_file_1}}"
- "{{ env_file_2}}"
我基本上添加了 command
属性以在容器启动时调用您的 ./dockertools/createDomainAndStart.sh
脚本。
Ansible documentation 对 command
属性的描述如下:
Command to execute when the container starts. A command may be either a string or a list. Prior to version 2.4, strings were split on commas.
我有以下 Docker 命令:
docker run -d --name ADMIN_SERVER_TEST1 --network=soa_net --ip=172.16.1.11 -p 7001:7001 -v /Oracle_Volumes/ENVIRONMENTS/TEST1/SOA-Volume/cheetah_domain:/u01/oracle/user_projects --env-file $ENV_HOME/adminserver-test1.env.list --env-file $ENV_HOME/soaserver-test1.env.list -u root redreply/soa-suite:12.2.1.3 ./dockertools/createDomainAndStart.sh && docker logs -f ADMIN_SERVER_TEST1
对于此命令,我使用 Ansible 创建了以下脚本:
- name: Create SOA container
docker_container:
name: "{{ name }}"
image: "{{ image }}"
detach: yes
privileged: yes
user: root
volumes:
- "{{ src_vol }}:{{ dest_vol }}"
ports:
- 7001:7001
networks:
- name: soa_net
ipv4_address: "{{ ip }}"
env_file:
- "{{ env_file_1}}"
- "{{ env_file_2}}"
但我不知道如何将这部分添加到 Ansible 脚本中:
./dockertools/createDomainAndStart.sh && docker logs -f ADMIN_SERVER_TEST1
如果你想运行你的脚本作为容器启动时在容器中执行的command
,你可以使用command
属性指定它,如下所示:
- name: Create SOA container
docker_container:
name: "{{ name }}"
image: "{{ image }}"
detach: yes
privileged: yes
user: root
command: ./dockertools/createDomainAndStart.sh
volumes:
- "{{ src_vol }}:{{ dest_vol }}"
ports:
- 7001:7001
networks:
- name: soa_net
ipv4_address: "{{ ip }}"
env_file:
- "{{ env_file_1}}"
- "{{ env_file_2}}"
我基本上添加了 command
属性以在容器启动时调用您的 ./dockertools/createDomainAndStart.sh
脚本。
Ansible documentation 对 command
属性的描述如下:
Command to execute when the container starts. A command may be either a string or a list. Prior to version 2.4, strings were split on commas.