用启动脚本build立docker容器
我试图build立docker容器应该包括启动脚本通过容器的/etc/my_init.d目录。 我很难find任何文件如何做到这一点。 这是我的yaml文件的相关部分:
- name: Create container docker: name: myserver image: "{{ docker_repo }}/myserver:{{ server.version }}" state: started restart_policy: always docker_api_version: 1.18 registry: "{{ docker_repo }}" username: "{{ registry_user }}" password: "{{ registry_password }}" links: - "mywebservices" ports: - "8000:8000" - "9899:9899" volumes: - "{{ myserver_home_dir }}/logs:/var/log/my_server" env: MY_ENVIRONMENT: "{{ my_environment }}" when: myserver_action == "create" or (myserver_action == "diff-create" and myserver.changed) or myserver_action == "update"
我应该在这里添加什么来告诉可以在构build期间将我的文件放入容器的/etc/my_init.d中?
首先,你不能build立容器(你可以启动它),你build立图像。
其次, docker
模块已被弃用,使用docker_image
来构build图像。
您应该将您的文件复制到生成目录(使用copy
或synchronize
模块),例如:
/tmp/build
然后创buildDockerfile
,将它们从build立目录,并添加到您的图像。
在那之后调用docker_image
:
docker_image: path: /tmp/build name: myimage
最后启动你的容器:
docker_container: image: myimage name: mycontainer
不确定是否相关,因为我不知道你的启动Ansible内容在做什么,但是可能值得看看Ansible Container项目。
https://github.com/ansible/ansible-container
您可以使用Ansibleangular色(而不是Dockerfile)来构build容器映像,在本地进行编排,并将其部署到生产Kubernetes或Red Hat OpenShift。