Tag: dockerfile

Tomcat docker-撰写运行的web应用程序

想知道是否有人试图使用docker-compose来运行tomcat并成功运行一个web应用程序。 我已经把下面的docker组成文件放在一起。 tomcat: image: bitnami/tomcat:latest environment: – TOMCAT_USERNAME=root – TOMCAT_PASSWORD=password links: – db:mysql ports: – 8585:8080 volumes: – ./tomcat:/bitnami/tomcat db: image: mariadb ports: – 3636:3306 environment: MYSQL_ROOT_PASSWORD: password phpmyadmin: image: phpmyadmin/phpmyadmin links: – db:mysql ports: – 8689:80 environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: password PMA_HOST: mysql 容器都运行,我可以访问Apache的“Web应用程序pipe理器”,我已经部署了我的.war文件显示正在运行。 但是当我尝试从浏览器访问它时,我得到一个404 如果任何人能够帮助或指引我在正确的方向,将不胜感激。 对不起,应该指出我正在使用Thyme-leaf进行网页模板化处理,所以index.html文件位于resources / templates文件夹中,我有我的Controller映射到它。 我开始使用百里香叶之前也有这个问题。 一切都在当地环境中工作,而不是在容器中。

重用inheritance的图像的CMD或ENTRYPOINT

我怎样才能包括我自己的shell脚本CMD的容器启动/重新启动/附加,而不删除由inheritance的图像使用的CMD ? 我正在使用这个,它执行我的脚本很好,但似乎覆盖PHP的CMD : FROM php COPY start.sh /usr/local/bin CMD ["/usr/local/bin/start.sh"] 我应该做什么不同? 我正在避免复制/粘贴父图像的ENTRYPOINT或CMD的前景,也许这不是一个好方法。

在构build期间将别名添加到Docker

因为我正在编译一个容器的编译阶段的程序,所以我在包含.bashrc中的容器的编译过程中join了别名: RUN cat /path/to/aliases.sh >> ~/.bashrc 当我启动容器时,所有别名都可用。 这已经很好了,但不是我想要的行为。 我已经谷歌周围发现,.bashrc文件只加载时使用交互式的壳,而不是在容器的生成阶段的情况下。 我试图强制加载我的别名使用: RUN shopt -s expand_aliases 要么 RUN shopt -s expand_aliases && alias 要么 RUN /bin/bash -c "both commands listed above…" 令人惊讶的是没有达到预期的结果。 [/反讽] 现在我的问题:我怎样才能为容器的构build阶段设置别名? 问候

如何通过Dockerfile设置mysql系统variables,如max_allowed_pa​​cket max_allowed_pa​​cket,character_set_server和collat​​ion-server?

我使用的是用于MySQL的Docker。 需要在Dockerfile中设置系统variables,如mysql的max_allowed_pa​​cket,character_set_server和collat​​ion-server。 我尝试使用Dockerfile中提供的下面的命令。 但它不工作。 Dockerfile: FROM mysql:latest VOLUME /opt/data:/var/lib/mysql ENV MYSQL_ROOT_PASSWORD password RUN sed -i 's/^max_allowed_packet.*/max_allowed_packet = 1073741824/' /etc/mysql/my.cnf RUN sed -i "/\[mysqld]/a character-set-server=utf8mb4" /etc/mysql/my.cnf RUN sed -i 's/^collation-server.*/collation-server = utf8mb4_unicode_ci/' /etc/mysql/my.cnf CMD ["mysqld"] 构build命令: sudo docker build -t mysqltest:1 . 运行命令: sudo docker run -p 3306:3306 -restart=always -d mysqltest:1

Docker:将rsa键添加到构build上下文之外的映像

所以我想在我的映像中包含一个rsa密钥,以便在构build映像时将git repo克隆到我的映像中。 但我真的不想在docker build repo中保留这个键。 有没有人有如何处理这个好的build议? 从docker文档和其他各种线程看来,没有办法从构build上下文之外COPY文件。 除了以下我不感兴趣的解决scheme: 如何在Docker的构build上下文之外包含文件? 有更好的解决办法吗? 或者,我将不得不保留在生成回购的关键或build立从我想要使用的RSA密钥的位置? 我想一个可能的方法是从构build仓库中取回密钥,并在克隆时将其放入,并在自述文件中记下它,以便其他开发人员也知道这一点。 —我的解决scheme— 我不认为这有一个“正确”的答案,但这是我的解决scheme。 我创build一个Linux用户(某处)并为其生成密钥。 然后在gitlab上创build一个只有repo克隆权限的用户。 我将linux用户的公钥添加到gitlab用户。 然后为构build我创build.ssh文件夹并复制用户私钥与configuration文件。 我只是将该用户密钥存储在docker build repo中。 构build步骤: RUN mkdir ~/.ssh RUN touch ~/.ssh/known_hosts RUN ssh-keyscan -t rsa gitlab_host > ~/.ssh/known_hosts COPY ./ssh/config /root/.ssh COPY ./ssh/id_rsa_app /root/.ssh RUN chmod 600 /root/.ssh/id_rsa_app sshconfiguration文件: Host gitlab-app HostName gitlab_host IdentityFile /root/.ssh/id_rsa_app IdentitiesOnly yes 现在git克隆在内部工作。

在Docker容器中的主要服务完全加载后运行bash脚本

我正在使用这个docker库来安装searchguard和searchguard searchguard需要在弹性search完全加载后运行脚本bin/init_sg.sh 。 我不喜欢每次重新创build容器时手动运行docker exec -it elasticsearch bin/init_sg.sh 。 我正在寻找在Dockerfile或docker-compose.yml中以编程方式执行的方式。 我现在的主要问题是finddockerfile中的主进程pid,并确保elasticsearch服务已完全加载。 任何人都可以给我build议如何做到这一点? 不成功的Dockerfile FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3 COPY config/ config/ COPY bin/ bin/ # Search Guard plugin # https://github.com/floragunncom/search-guard/wiki RUN elasticsearch-plugin install –batch com.floragunn:search-guard-5:5.6.3-16 \ && chmod +x \ plugins/search-guard-5/tools/hash.sh \ plugins/search-guard-5/tools/sgadmin.sh # Add your elasticsearch plugins setup here # Example: RUN elasticsearch-plugin install analysis-icu CMD bin/elasticsearch […]

docker图像的操作系统名称

我正在尝试使用docker提供的基础Ubuntu映像构build一个新的Docker镜像。 我将使用docker文件来运行几个脚本并在基本映像上安装应用程序。 但是我的脚本要求是主机名应该保持不变。 我找不到有关Docker镜像的操作系统名称的信息。 有没有人有一个想法,一旦我们添加图层到docker的图像操作系统的名称保持不变。

基于非现有图像的Docker容器?

在更好地理解SSH和Docker的过程中(我知道在容器中运行SSH有很多方法)。 我审查了这个容器danielguerra /阿尔卑斯山sshd 。 使用说明中的第一条命令使用此映像: danielguerra / ssh-container 。 请注意,我具体询问引用ssh-container映像的这个命令: docker create -v /root/.ssh –name ssh-container danielguerra/ssh-container /bin/true 但是,该存储库是空的。 没有Dockerfile存在。 所以我很好奇容器最终以什么样的图像为基础呢? TIA,Ole

Docker-Compose Up Works但Eb Local Run不行

附件是我的docker-compose文件。 它是一个非常简单的项目,有一个数据库和phpmyadmin来访问它。 web: build: ./docker_web/ links: – db ports: – "80:80" volumes: – "./docker_web/www/:/var/www/site" db: image: mysql:latest restart: always volumes: – "./.data/db:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: ^^^^ MYSQL_DATABASE: electionbattle MYSQL_USER: admin MYSQL_PASSWORD: ^^^^ phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin environment: – PMA_ARBITRARY=1 restart: always ports: – 8081:80 volumes: – /sessions links: – db 如果我运行这个工作正常。 我为Amazon Elastic Beanstalk的Docker运行创build了Equivlent,并启动,但由于某种原因,它找不到在.data文件夹中保留我的持久数据库数据的卷。 我试图改变.data只是数据没有运气。 […]

为什么apache2不会在docker映像上重新启动时删除pid文件

我已经创build了这个docker的形象: FROM debian:jessie RUN apt-get update && apt-get install -y apache2 python-pip libapache2-mod-wsgi l RUN pip install django CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"] 当我运行一个容器时,我正在调用–restart=always参数。 所以如果我重启电脑主机,容器会自动重启。 但是,有一个问题:apache2 pid文件没有被删除,所以apache2无法重新启动。 我必须手动删除PID文件,一切都很好。 我有两个问题: 为什么这个PID文件不会在物理计算机上产生任何问题? 是否有可能告诉Apache在启动时擦除这个PID文件? 是否有可能在docker文件中放置“ pre-CMD ”命令? 一种将在apache2ctl之前运行的CMD ?