Tag:

Docker,Dockerfile,并在开始我的下一个服务之前使用等待

我有2个Dockerfiles,'app'依赖于'sso'。 a)keycloak-Dockerfile: FROM jboss/keycloak-mysql:3.3.0.Final 这个服务在我的docker-compose.yml文件中被称为'sso' b)我的野蛮服务Dockerfile: FROM openjdk:8u111-jdk-alpine在那里我部署我的java服务 这个服务在我的docker-compose.yml文件中被称为“app” 因此,这个'sso'服务需要一段时间才能部署。 我希望我的'应用程序'在'sso'服务启动后部署。 关于我的configuration有一点要记住,'sso'启动端口8080相当快,但需要时间来获得所有的keycloak-realms。 这是我的'app'-Dockerfile中的第一个方法 FROM openjdk:8u111-jdk-alpine RUN apk update && apk add –no-cache tini openssl bash COPY target/accounts-api-swarm.jar /usr/src/myapp/ WORKDIR /usr/src/myapp RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /wait-for-it.sh && chmod +x /wait-for-it.sh ENTRYPOINT ["/tini", "–", "/wait-for-it.sh", "sso:8080", "-t", "360", "–"] CMD java -jar accounts-api-swarm.jar -Sinitdata 这种方法是行不通的,因为accounts-api-swarm.jar是在所有keycloak领域都已经部署之前部署的(刚刚在sso:8080启动之后) 我的下一个尝试是(how_I_believe_wait-for-it.sh_works)是看“主”领域是否可用。 FROM […]

无法访问任何服务的容器

我创build了一个图像: stavalfi/projecty:latest这是一个非常基本的Java春季应用程序。 当我运行一个没有swarm的容器时,一切工作正常: docker run -d -p 8081:8080 –name container1 stavalfi/projecty:latest 从铬工作: http://localhost:8081/ http://172.17.0.2:8080/ <<– the address of the leader (no other nodes in the swarm) 当我使用以下方法创build服务时: docker service create -p 8080:8080 –name service1 stavalfi/projecty:latest docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ab8cb85e9750 stavalfi/projecty:latest "/bin/sh -c '/usr/…" 5 minutes ago Up 5 […]

用Cetnos7 apache和php构build一个Docker容器。

我将在这之前说,我对docker世界非常陌生,尽pipe阅读文档,但对于一些事情我还是有点困惑。 我想用centos7 apache和php构build一个容器。 我不想使用已经存在的图像,想要构build自定义容器。 我有以下文件夹结构 我的rw / docker / webserver / Dockerfile: FROM centos:7 ENV container docker RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ […]

Docker工具箱 – 本地主机不工作

所以我使用的是Docker Toolbox,因为我的机器上没有Hyper-V,因为它不是Windows 10专业版。 一切似乎工作正常,但是当我尝试去我的浏览器0.0.0.0:80它总是返回我:此网站无法达成 但是,当我运行命令: docker container ps我得到以下内容:0.0.0.0: 0.0.0.0:80->80/tcp ,这意味着这个地址应该工作。 我search了stackoverflow和github问题。 现在我卡住了。 我错过了什么吗? 谢谢,马克 编辑: 使用docker-machine ip default返回我192.168.99.100 。 我运行在端口80.我仍然得到相同的结果,除了地址成为容器ID: https://fd677edg12 我在cmd上运行该命令来查找我的ipv4: cmd /k ipconfig /all 。 把结果放在端口上,并返回相同的结果: https://fd677edg12

如何在PHP代码中使用Docker的秘密?

在PHP脚本中使用Docker机密的最佳实践是什么? 使用案例:我有一个Docker堆栈,它由(1)基于图像的web服务组成,它将php与apache服务器连接起来,(2)基于最新的mysql映像的db服务。 在我的web服务的/ var / www / html中,我有一个config.php,它定义了许多表示数据库连接参数(用户名,密码等)的variables。 这个config.php文件包含在整个代码库build立数据库连接的地方。 我有docker的秘密定义对应于我想在config.php中定义的每个参数 – 在config.php的定义中使用这些秘密的最佳方法是什么? 默认情况下,每个docker机密都被挂载到文件/run/secrets/<secret name> 。 我天真的解决scheme只是简单地使用fopen()和fgets(),如下所示: function getSecret($secret){ $secret_file = fopen("/run/secrets/{$secret}"); $secret = fgets($secret_file); fclose($secret_file); return $secret; } config.php文件: return [ 'database' => [ 'host' => getSecret('db_host'), 'user' => getSecret('db_user'), 'password' => getSecret('db_password), … ] ]; 这看起来是一个明智的做法吗?

docker-compose:执行数据库脚本

我使用docker-compose和dockerfile设置本地mssql数据库。 我可以在这里使用这个例子: https://github.com/mcmoe/mssqldocker 它在启动时执行数据库脚本来创build数据库。 我现在正在运行几个SQL脚本来设置数据库。 所以我可以运行: docker-compose build 然后… docker-compose up Docker将启动mssql并运行脚本来创build我的数据库,包含表,视图和预填充数据的模式。 但是,如果我运行: docker-compose stop 然后运行: docker-compose up 它试图再次运行所有的脚本,这是不好的(很多错误)。 理想情况下,我只想这一次发生。 有没有办法告诉docker不运行脚本,如果他们已经跑了? 我真的想减less本地数据库的设置真的是一回事: docker-compose up – 应该尽一切努力。 编辑: 我尝试使用以下包装SQL脚本: if [ ! -d "/var/lib/mssql/data" ]; then # scripts in here fi 但它总是跳过它们!

Docker与2个WordPress和1个数据库问题

我想要做到以下几点:1在端口8000上的wordpress 1在端口8001上的wordpress 1个db为2个wordpress站点共享 我想象中的docker工人 version: '3' services: db: image: mysql:5.7 volumes: – db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress-mikael-blog: depends_on: – db image: wordpress:latest container_name: mikael-blog ports: – "8001:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_TABLE_PREFIX: mikael_ wordpress-audrey-blog: depends_on: – db image: wordpress:latest container_name: audrey-blog ports: […]

:: SetDiGetDeviceRegistryProperty()失败与Docker for Windows上的SPDRP_BUSTYPEGUID

我不能在Docker Windows容器上获取​​Hyper-V虚拟以太网适配器的总线typesGUID。 主机是Windows Server 2016版本10.0.14393。 重现步骤 编译SetupDiGetDeviceRegistryPropertyExperimental.cpp,并生成SetupDiGetDeviceRegistryPropertyExperimental.exe 将SetupDiGetDeviceRegistryPropertyExperimental.exe复制到c:\ data \ 在下面创build一个Dockerfile。 执行下面的do.bat。 SetupDiGetDeviceRegistryPropertyExperimental.cpp // SetupDiGetDeviceRegistryPropertyExperimental.cpp : Defines the entry point // for the console application. // #include "stdafx.h" #include <cstdio> #include <string> #include <SetupAPI.h> #include <Windows.h> #include <devguid.h> std::wstring ConvertLastErrorToString(DWORD last_error) { LPVOID lpMessageBuffer = nullptr; ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, last_error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMessageBuffer, 0, […]

如何configurationdocker允许更新与音量的WordPress的/插件?

我有一个最后的docker的WordPress的设置。 一切工作,除了事实它不更新自己或插件,而不要求FTP访问。 我设置了define('FS_METHOD', 'direct'); 但是关于permisions的wordpress投诉。 现在,我尝试在docker-compose上设置用户: version: '2' services: mysql: image: mysql/mysql-server:5.7 .. .. wordpress: image: wordpress user: mamcx ports: – "8001:80" restart: always depends_on: – mysql links: – mysql environment: – WORDPRESS_DB_NAME=wordpress – WORDPRESS_DB_USER=wordpress – WORDPRESS_DB_PASSWORD=pinky volumes: – ./html:/var/www/html 并得到: 开始renderme_wordpress_1 …错误 错误:renderme_wordpress_1无法启动服务wordpress:b'linux spec用户:无法find用户mamcx:没有在passwd文件中匹配的项目' 那么,如何正确设置? 我希望在这里不要使用FTP或SSH。

了解docker与自定义文件。

我是Docker的新手,我有一个应用程序,我正在探索Docker。 随着docker工人组成,我可以多个容器,直到这里一切都按预期工作。 我们有相应的.sh和.yml文件。 我有问题需要了解的情况是有一个容器,我可以放置我的自定义目录,文件,并提到在容器启动/重新启动时,自定义文件将被复制到该容器的webroot。 我想了解幕后发生的事情。 它会在容器启动/重新启动时创build新映像并部署该映像。 它只会将这些文件移动到新的容器中。 任何帮助了解上述情况,非常感谢。 提前致谢。